MongoDB中文档存入数据库后用update方法更新文档,update方法有两个参数,例如

update(args1,args2)

args1是指查询文档的条件;

args2是指对查询到的文档进行什么样的修改;

一、文档替换

>joe1=db.post.findOne({"age":20}){"_id":ObjectId("54a530c3ff0df3732bac1680"),"id":1,"name":"joe","age":20}>joe1.age=2121>db.post.update({"id":1},joe1)WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>

修改后的结果:

>joe1=db.post.findOne({"age":21}){"_id":ObjectId("54a530c3ff0df3732bac1680"),"id":1,"name":"joe","age":21}>

二、使用修改器

1.$set修改器

$set用来指定一个字段的值,如果字段不存在就创建;

>db.post.findOne(){"_id":ObjectId("54a530c3ff0df3732bac167f"),"id":0,"name":"joe","age":65}

增加comments的键:

>db.post.update({"id":0},...{$set:{"comments":"iloveyou"}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.post.findOne(){"_id":ObjectId("54a530c3ff0df3732bac167f"),"id":0,"name":"joe","age":65,"comments":"iloveyou"}>

修改comments键的值:

>db.post.update({"id":0},{$set:{"comments":"idon'tloveyou"}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.post.findOne(){"_id":ObjectId("54a530c3ff0df3732bac167f"),"id":0,"name":"joe","age":65,"comments":"idon'tloveyou"}>


修改comments的值为数组:

>db.post.update({"id":0},{$set:{"comments":["iloveyou","or","idon'tloveyou"]}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.post.findOne({"id":0}){"_id":ObjectId("54a530c3ff0df3732bac167f"),"id":0,"name":"joe","age":65,"comments":["iloveyou","or","idon'tloveyou"]}>


删除comments的值:

>db.post.update({"id":0},{$unset:{"comments":1}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.post.findOne({"id":0}){"_id":ObjectId("54a530c3ff0df3732bac167f"),"id":0,"name":"joe","age":65}>


2.修改内嵌文档

>db.post.findOne({"id":0}){"_id":ObjectId("54a530c3ff0df3732bac167f"),"id":0,"name":"joe","age":65,"comments":{"1":1,"2":2,"3":3}}>db.post.update({"id":0},{$set:{"comments.1":4}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.post.findOne({"id":0}){"_id":ObjectId("54a530c3ff0df3732bac167f"),"id":0,"name":"joe","age":65,"comments":{"1":4,"2":2,"3":3}}>