1、我们 mongodb 安装成功后,用上一篇的方法启动 mongodb服务 然后使用 mongodb shell 来做数据库的增删改查
2、创建数据库
语法:
use 数据库名称
案例:
> use juyou switched to db juyou > show dbs admin 0.000GB config 0.000GB local 0.000GB
这时创建完成过,使用命令查询数据库却没有我们刚创建的数据库,这时因为刚创建的数据库没有数据,下面我们在数据库中插入一条数据
> db.juyou.insert({"name":"聚优福利"}) WriteResult({ "nInserted" : 1 }) > show dbs admin 0.000GB config 0.000GB juyou 0.000GB local 0.000GB
这时就能看到刚刚创建的数据库了
3、删除数据库
语法:
db.dropDatabase()
案例:
首先我们先查询一下所有的数据库
> show dbs admin 0.000GB config 0.000GB juyou 0.000GB local 0.000GB
然后我们可以使用 db 来查看当前的数据库
> db
juyou
当前链接的数据库就是 juyou,如果不是可以使用 use juyou 命令切换到 juyou 数据库
> use juyou
switched to db juyou
执行删除命令
> db.dropDatabase() { "dropped" : "juyou", "ok" : 1 }
然后再我们再查询一下所有数据库
> show dbs admin 0.000GB config 0.000GB local 0.000GB
已经成功删除了
4、创建集合
语法:
db.createCollection(name, options)
name:集合名称
options: 可选参数
案例:创建一个名为 userinfo 的集合
> db.createCollection("userinfo") { "ok" : 1 } > show collections userinfo
创建成功后可以使用 show collections 命令查询已有集合
5、插入文档
语法:
db.集合名称.insert(document)
案例:
在 juyou 集合下的 userinfo 文档中插入一条数据
> db.juyou.userinfo.insert({name:"郭大爷","sex":"男","age":"不详"}) WriteResult({ "nInserted" : 1 }) > db.juyou.userinfo.find() { "_id" : ObjectId("5abaf679a3aadbe625070c4f"), "name" : "郭大爷", "sex" : "男", "age" : "不详" }
插入成功后,可以使用 find() 来查询刚刚插入的数据,下面会对查询做详细的讲解,这里不多做解释
可以看到插入数据后,多了一列 _id 的数据,在文档中 mongodb 会将 _id 字段自动设置为主键,如果不指定mongodb会自动生成
自动生成的 ObjectId 是由时间戳、MachineID(电脑的 mac 地址)、进程ID以及自增计数器组成的,基本上不会重复
> db.juyou.userinfo.insert({"_id":1,name:"郭少爷","sex":"男","age":"不详"}) WriteResult({ "nInserted" : 1 }) > db.juyou.userinfo.find() { "_id" : ObjectId("5abaf679a3aadbe625070c4f"), "name" : "郭大爷", "sex" : "男", "age" : "不详" } { "_id" : 1, "name" : "郭少爷", "sex" : "男", "age" : "不详" }
也可以在插入数据时指定 _id 值,在之前使用mongodb开发中会指定给 _id 值,使用GUID(全球唯一标识)代替
我们也可以先将要插入的数据定义成变量
> var user = {name:"郭老师",sex:"男",age:"18"} > db.juyou.userinfo.insert(user) WriteResult({ "nInserted" : 1 }) > db.juyou.userinfo.find() { "_id" : ObjectId("5abaf679a3aadbe625070c4f"), "name" : "郭大爷", "sex" : "男", "age" : "不详" } { "_id" : 1, "name" : "郭少爷", "sex" : "男", "age" : "不详" } { "_id" : ObjectId("5abb05afa3aadbe625070c50"), "name" : "郭老师", "sex" : "男", "age" : "18" }
mongodb 在3.2版本后 提供了一次插入多条数据的方法 insertMany() ,我们下面把上面的三条数据删除,然后试一下一次插入多条数据
> db.juyou.userinfo.remove({}) WriteResult({ "nRemoved" : 3 }) > db.juyou.userinfo.find()
> var users = [ ... { ... _id:1, ... name:"郭大爷", ... sex:"男", ... age:"80" ... }, ... { ... _id:2, ... name:"郭老师", ... sex:"男", ... age:"不详" ... }, ... { ... _id:3, ... name:"郭少爷", ... sex:"男", ... age:"18" ... } ... ] > db.juyou.userinfo.insertMany(users) { "acknowledged" : true, "insertedIds" : [ 1, 2, 3 ] } > db.juyou.userinfo.find() { "_id" : 1, "name" : "郭大爷", "sex" : "男", "age" : "80" } { "_id" : 2, "name" : "郭老师", "sex" : "男", "age" : "不详" } { "_id" : 3, "name" : "郭少爷", "sex" : "男", "age" : "18" }
这样我们可以直接插入一个数组
6、更新文档
语法:
db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> } )
query:条件,相当于sql update时where条件
update: 要更新的内容,类似 sql 的 set 后面的内容
案例:我们先查询一下郭老师的年龄是不详,现在我们根据主键_id来把年龄更新成20岁
> db.juyou.userinfo.find() { "_id" : 1, "name" : "郭大爷", "sex" : "男", "age" : "80" } { "_id" : 2, "name" : "郭老师", "sex" : "男", "age" : "不详" } { "_id" : 3, "name" : "郭少爷", "sex" : "男", "age" : "18" } > db.juyou.userinfo.update({"_id":2},{$set:{"age":"20"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.juyou.userinfo.find() { "_id" : 1, "name" : "郭大爷", "sex" : "男", "age" : "80" } { "_id" : 2, "name" : "郭老师", "sex" : "男", "age" : "20" } { "_id" : 3, "name" : "郭少爷", "sex" : "男", "age" : "18" }
已经成功将郭老师的年龄改成20,然后我们看到在更新命令中又一个 $set 的关键词,这个是更新操作符,下面来介绍一下