通过shell启动数据库
使用昨天学过的命令 mongod --dbpath /Users/pro/Documents/mongodb/data/db 来启动服务 (先切换到bin目录下) 然后使用命令 mongo 来启动数据库
这里默认启动的也是27017的端口,如果想更换端口可以使用 mongo --port 8888 前提是前面启动mongodb服务的时候也要更换端口
此时数据库已经启动,下面来学习shell的基本操作。
一、创建数据库
命令 use foobar
此时的foobar数据库没有真正被创建,而是在mongo的预处理缓存中存在,所以此时如果什么都不干直接离开的话,这个空数据库会被mongo删除掉。
二、给指定数据库添加集合并且添加记录
上面创建了 foobar 数据库之后下面命令中的 db 就代表这个数据库,如果数据库中有多条数据文档,可以通过 use 数据文档的名字 切换到你想要的文档,此时db就代表当前的这个数据文档。
1、在数据库中添加一条叫 persons 的数据
db.persons.insert({username:"fanhu"})
2、查看所有的数据库
show dbs ---> foobar
3、查看当前数据库中有哪些数据文档
show collections ---> persons
4、查看数据库中指定数据文档的内容
db.persons.find() ---> { "_id" : ObjectId("5863c308aa541fa30eca26e4"), "username" : "fanhu" }这个id是mongodb自动给插入的一个id对象
5、查看数据库中的第一条数据文档
db.persons.findOne()6、更新文档 (后面详细讲更新器的内容,这里简单说一下set修改器)
db.persons.update({username:"fanhu"},{$set:{username:"我是樊虎"}})
第一个参数是要修改的数据,第二个参数是说要怎么改。
这时候再来查看文档内容
db.persons.find() ---> { "_id" : ObjectId("5863c308aa541fa30eca26e4"), "username" : "我是樊虎" }
更新数据也可以使用下面的语句
var p = db.persons.findOne()
db.persons.update(p,{$set:{username:"我是樊虎"}})
db.persons.find() ---> { "_id" : ObjectId("5863c308aa541fa30eca26e4"), "username" : "我是樊虎" }
我们看到这样写也是可以运行的,结果是一样的,因为shell客户端其实就是js引擎,所以可以使用js语法。
但是要注意一点:
如果使用 db.persons.update(p,{age:"27"})
这时再来查看数据 ---> { "_id" : ObjectId("5863c308aa541fa30eca26e4"), "age" : 27}因为我们没有使用$set,所以现在只有一条数据了,原来的name没有了,这就是set修改器的一个作用。
如果使用 db.persons.update(p,{$set:{username:"我是樊虎",age:"27"}})
再来查看数据 ---> {
"_id" : ObjectId("5863c0b1aa541fa30eca26e3"),
"username" : "我是樊虎",
"age" : "27"
}
7、删除文档数据
使用 db.persons.find() 查看全部数据文档(可以看到现在有两条数据){ "_id" : ObjectId("5863c0b1aa541fa30eca26e3"), "username" : "我是樊虎", "age" : "27" }
{ "_id" : ObjectId("5863c308aa541fa30eca26e4"), "name" : "fanhu" }
然后我们把第二条删除掉
db.persons.remove({name:"fanhu"})
再来查看 db.persons.find() ---> { "_id" : ObjectId("5863c0b1aa541fa30eca26e3"), "username" : "我是樊虎", "age" : "27" }这时就只剩一条数据文档了。