今天看书看到mongodb权威指南这本书对更新这一篇进行了详细详解,因为知识点有点多,所以博客记录一下,如果只是看我觉得明天就忘了。
更新文档有两种方式:
1,文档替换,2,修改器替换(只是修改单个字段的内容)
关于更新有哪些参数可以看一下帮助文档
db> db.blog.update function (obj,查询,插入,,多) 查询:条件 obj:对象,更新的类容 插入:判断更新的条件是否存在 多:默认情况下更新只对符合匹配条件的第一个文档执行操作,要是这个为真,就是配置内容所以都更新
文档替换
当前的数据类型是
wangaimin>, db.test.findOne({“名称”:“bob”}) { ,,,,,,,,“_id”:, ObjectId (“58 e4b6410b8bd344936c8553”), ,,,,,,,“名字”,:,“bob”, ,,,,,,,“电子邮件”,:,“bob.com.cn”, ,,,,,,,“内容”,:,“nice 文章” }
我需要变成这个样子:
wangaimin>, db.test.find({“名字”,:,“bob”}) {," _id ": ObjectId (“58 e4b6410b8bd344936c8553”), “名称”,:“鲍勃”,, “评论”,:,{,“电子邮件”:“bob.com.cn”,“内容”,:,“nice 文章”,}, }
操作步骤是:
wangaimin>, var 测试=db.test.findOne({“名称”:“bob”}) Test.comments={“内容”,“电子邮件”:Test.email: Test.content} delete Test.content delete Test.email db.test.update({“名字”,:,“bob”},测试) 其实这个地方有一个坑,就是_id,如果你匹配中有多个名字=癰ob”,你就会报错,_id必须是唯一的,所以可以也可以执行delete 测试。_id,这里没有写的很详细,大家可以仔细想一下,如果不想是没有记忆点
使用修改器:
1,美元将修改器
修改之前: wangaimin>, db.test.find({“名字”,:,“bob”}) {," _id ": ObjectId (“58 e4b6410b8bd344936c8553”),“名字”,:,“鲍勃”,“评论”,:,{,“电子邮件”:“bob.com.cn”,“内容”,:,“nice 文章”,},} 命令:db.test.update({“名字”,:,“bob”},{$设置:{“名称”:“bob”}}) 修改之后: wangaimin>, db.test.find({“名字”,:,“BOB”}) {," _id ": ObjectId (“58 e4b6410b8bd344936c8553”),“名字”,:,“鲍勃”,“评论”,:,{,“电子邮件”:“bob.com.cn”,“内容”,:,“nice 文章”,},} 修改内嵌文档: 命令:wangaimin>, db.test.update({“名字”,:,“BOB”},{$设置:{“comments.content”:“change le“}}) 修改之后: wangaimin>, db.test.find({“名字”,:,“BOB”}) {," _id ": ObjectId (“58 e4b6410b8bd344936c8553”),“名字”,:,“鲍勃”,“评论”,:,{,“电子邮件”:“bob.com.cn”,“内容”,:,“change 勒”,},}
2,inc 美元;增加和减少 注意:$ inc 键的值必须是数字,不能为字符串,数组或其他非数字的值 db.test.find () {," _id ": ObjectId (“58 e4bb4b0b8bd344936c8554”),“数量”,:,10,} wangaimin>, db.test.update ({number: 10}, {$ . n:行情):{number: 3}}) wangaimin>, db.test.find () {," _id ": ObjectId (“58 e4bb4b0b8bd344936c8554”),“数量”,:,13,}
3,推动美元添加数组
如果数组已经存在,美元将会向已有的数组末尾加入一个元素,要是没有就创建一个新的数组
,db.test.find () {," _id ": ObjectId (“58 e4bd5f0b8bd344936c8555”),“学校”,:,“bd”,} db.test.update({“学校”:“bd”},{推动美元,{“列表”:{“名称”:“zhangsan”,“年龄”:20}}}) db.test.find () {," _id ": ObjectId (“58 e4bd5f0b8bd344936c8555”),“学校”,:,“bd”,“列表”,:,“,{,“名字”,:,“zhangsan”,“年龄”,:,20,},],}
4,使用美元每添加多个值
db.test.update({“学校”:“bd”},{$推:{“列表”:{$每个:[{“名称”:“zhangsan”,“年龄”:21},{“名称”:“zhangsan”,“年龄”:22},{“名称”:“zhangsan”,“年龄”:23},{“名称”:“zhangsan”,“年龄”:24}]}}}) {," _id ": ObjectId (“58 e4bd5f0b8bd344936c8555”),“学校”,:,“bd”,“列表”,:,“,{,“名字”,:,“zhangsan”,“年龄”,:,20,},,{,“名字”,:,“zhangsan”,“年龄”,:,21,},,{,“名字”,:,“zhangsan”,“年龄”,:,22,},,{,“名字”,:,“zhangsan”,“年龄”,:,23,},,{,“名字”,:,“zhangsan”,“年龄”,:,24,},],}monggodb学习过程,更新