1. 创建实验用的数据库和集合
建立实验用数据库 student中 stuinfo集合
# use student
# db
# db.createCollection("'stuinfo")
2. 插入文档
(1) 方法一使用 insert
db.stuinfo.insert({_id:001,name:'alice',age:18})
(2) 方法二使用 save
db. COLLECTION_NAME.save (<document>, {writeConcern:<document>})
参数说明:
- document:文档数据。
- writeConcern:可选,抛出异常的级别。
db.stuinfo.save({_id:001,name:'alice',age:18})
(3) 方法三 批量插入多个文档
db.stuinfo.insert([
{_id:001,name:'alice',age:18},
{_id:002,name:'test',age:18}
])
查看集合数据 db.stuinfo.find()
(4) 可以先将文档定义为一个变量,然后再进行插入
> s={_id:5,name:'jack',age:19}
> db.stuinfo.insert(s)
操作结果如下图所示:
3. 更新文档
(1) 使用 update 方法用于更新已存在的文档。语法格式如下:
db.COLLECTION_NAME.update (<criteria>,<objNew>,upsert, multi, writeConcern)
参数说明:
- criteria:update 的查询条件,类似 sql update 查询内 where 后面的条件。
- objNew:update 的对象和一些更新的操作符(如$,$inc...)等,也可以理解为 sql update 查询内 set 子句的内容
- upsert:可选,如果不存在 update 的记录,是否插入 objNew,true为插入,默认 false,不插入
- multi:可选,mongodb 默认 false,即只更新找到的第一条记录,如果这个参数为 true,就把按条件查出来多条记录全部更新。
- writeConcern:可选,抛出异常的级别。例如,通过update方法来更新上述文档的姓名(name),将姓名(name)为"curry"的文档更新为了"李四”,可以执行命令:
db.stuinfo.update({name:'curry'},{$set:{name:'rose'}})
通过 find() 查看修改是否成功,具体操作步骤如下所示:
以上语句只会修改第一条发现的文档,如果要修改多条相同的文档,则需要设置 multi 参数为 true。
db.stuinfo.insert([{_id:006,name:'nancy',age:19},{_id:007,name:'nancy',age:18}])
db.stuinfo.find()
db.stuinfo.update({name:'nancy'},{$set:{name:'cherry'}}, false, true)
操作结果如下图所示:
(2) 使用 save 方法通过传入的文档来替换已有文档。语法格式如下:
db.COLLECTION_NAME.save(<document>,{writeConcern:<document>})
参数说明:
- document:文档数据。
- writeConcern:可选,抛出异常的级别。
例如,要替换”_id”为"2"的文档的数据,可以执行下列命令:
db.stuinfo.save({_id:6,name:'miller',age:20})
操作步骤如下图所示:
(3) 数据更新操作符
- $set 操作符用来指定一个键的值,如果这个字段不存在,则创建它。
语法:{$set:{field:value}})
作用:把文档中某个 field 的值设为 value。 - $inc 操作符用来增加或减少已有键的值,如果该键不存在则创建一个。
语法:{$inc:{field:value}}
作用:对一个数字类型的某个field增加value,只能用于整型、长整型或双精度浮点型
的值。 - $unset 操作符用来删除一个键。
语法:{$unset:{field:1}}
作用:删除某个 field。
首先,创建一个实验用的 col 集合,然后使用 JavaScript 脚本的循环语句依次插入9个文档记录。
db.createCollection("col")
for(var i=1;i<10;i++) db.col.insert({count:i,test2:false,test5:true})
只更新第一条满足count>1的文档记录,将其test2的值设为"OK"。
db.col.update({"count":{$gt:1}}, {$set:{"test2": "Ok"}})
更新满足count>3的文档记录,将其test2的值设为"OK"。
db.col.update({"count":{$gt:3}}, {$set:{"test2": "Ok"}},false,true)
只更新第一条count>4的文档记录,将其test5的值设为"OK"。
db.col.update({"count":{$gt:4}}, {$set:{"test5": "Ok"}},true,false)
更新全部满足count>5的文档记录,将其test5的值设为"OK"。
db.col.update({"count":{$gt:5}}, {$set:{"test5": "Ok"}},true,true)
更新全部满足count>6的文档记录,将其count的值+1。
db.col.update({"count":{$gt:6}}, {$inc:{"count": 1}},false,true)
只更新第一条满足count>6的文档记录,将其count的值+1。
db.col.update({"count":{$gt:6}}, {$inc:{"count": 1}},false,false)
只更新第一条满足count>6的文档记录,将其count 删除。
db.col.update({"count":{$gt:6}}, {$unset:{"count": 1}},false,false)
4. 删除文档
(1) 删除集合中的全部文档
删除指定集合的全部文档:db.col.deleteMany({})
或 db.col.remove({})
(2) 删除指定条件的文档
删除集合 stuinfo 中 name = "cherry" 的全部文档。
db.stuinfo.deleteMany({'name':'cherry'})
删除满足条件 age = 18 的第一个文档
db.stuinfo.deleteOne({'age':18})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。