一、引言

         上一篇文章我们已经详细介绍了MongoDB数据库的有关查询的内容,但是这只是所有查询命令的冰山一角。所有查询命令都写完也没有必要,我只是写了一些常用的命令,对MongoDB的操作有一个基本的认识,如果大家想继续深入,可以根据自己的需要深入学习其他的命令。今天要讲一些和更新、修改有关系的语句、命令或者方法,当然不可能是所有的命令了,也只是一些常用的命令。我提供给大家一个基础,大家可以继续深入,我也会继续深入学习的。废话不多说,马上开始我们今天的写作吧。

二、MongoDB有关修改的详解

          
          我比较直接,还是直接来内容吧,有关修改的每个方法都有示例代码,应该不是很难,希望能起到抛砖引玉的作用吧。

            1、update() 方法

                    1.1、update() 方法用于更新已存在的文档。语法格式如下:

                         db.collectionName.update(
                            <query>,
                            <update>,
                            {
                              upsert: <boolean>,
                              multi: <boolean>,
                              writeConcern: <document>
                             }
                          )

                         参数说明:

                             query : update的查询条件,类似sql update查询内where后面的。

                             update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

                             upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

                             multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

                             writeConcern :可选,抛出异常的级别。

                    1.2、示例代码
                         
                          
                          > db.students.find({"name":"FangShiYu"})
                          { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 22, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }

                          //修改【name】是【FangShiYu】的【age】字段的值为【25】
                          > db.students.update({"name":"FangShiYu"},{"$set":{"age":25}})
                          WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                          > db.students.find({"name":"FangShiYu"})
                         { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 25, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
>

            2、$set 修改器:针对指定字段设置指定的值,修改字段的值

                   语法:db.collectionName.update({query},{"$set":{<key>:<value>}})

                   参数说明:

                          query:查询条件

                          key:要操作的字段名

                          value:要给key字段赋的值

                     在MongoDB数据库中通过 $set 修改器和 update()方法配合使用,起到修改指定字段的作用。

                     2.1、示例代码:

                          > db.students.find({"name":"FangShiYu"})
                          { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 22, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }

                          //修改【name】是【FangShiYu】的【age】字段的值为【25】
                          > db.students.update({"name":"FangShiYu"},{"$set":{"age":25}})
                          WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                          > db.students.find({"name":"FangShiYu"})
                         { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 25, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
                          >

            2、$inc 修改器:在数值字段在原有的基础上再增加指定的数值,其值可以是正数,也可以是负数,负数是减多少

                   语法:db.collectionName.update({query},{"$inc":{<key>:number}})

                   参数说明:

                          query:查询条件

                          key:要操作的字段名

                          number:增加的数量,可以是正数也可以是负数,正数相加,负数相减

                     在MongoDB数据库中通过 $inc 修改器和 update()方法配合使用,起到让数值字段在原有的基础上增加指定的数值的作用。                     

                     2.1、示例代码:【age】字段在原有基础上加 【正数:1】

                         > db.students.find({"name":"FangShiYu"})
                         { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 25, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }

                         //修改【name】是【FangShiYu】的【age】字段的值,让其值增加1,最受值为【26】
                         > db.students.update({"name":"FangShiYu"},{"$inc":{"age":1}})
                         WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                         > db.students.find({"name":"FangShiYu"})
                        { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 26, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
                         >

                     2.2、示例代码:【age】字段在原有基础上加 【负数:-5】

                         > db.students.find({"name":"FangShiYu"})
                         { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 26, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }

                         > db.students.update({"name":"FangShiYu"},{"$inc":{"age":-5}})
                         WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                         > db.students.find({"name":"FangShiYu"})
                         { "_id" : ObjectId("5ab9de223afa6504457050e2"), "name" : "FangShiYu", "age" : 21, "sex" : 1, "school" : "ZheJiangDaXue", "address" : "GuangDongGuangZhou" }
                         >

            3、$push 修改器:针对指定的字段插入文档列表,如果该字段不存在,会建立该字段并插入内文档容,如果存在,就向该字段的列表里追加文档内容。例如:留言板

                   documents={document}

                   语法:db.collectionName.update({query},{"$push":{<key>:document}})

                   参数说明:

                          query:查询条件

                          document:一个文档对象

                          key:要操作的字段名

                     在MongoDB数据库中通过 $push 修改器和 update()方法配合使用,起到留言板的效果,比如:多个人可以给某一个女生留言,每条留言就是一个文档,多个文档组成列表

                     2.1、示例代码:【messages】集合中原来没有【comments】字段

                         //原始记录
                         > db.messages.find()
                        { "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0 }

                        > query={"name":"tom","say":"i love u!"}
                        { "name" : "tom", "say" : "i love u!" }

                        > db.messages.update({"name":"peny"},{"$push":{"comments":query}})
                        WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                        //网【messages】集合中增加了【comments】字段,并增加了一个列表,也可以说数组
                        > db.messages.find()
                        { "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "i love u!" } ] }
                        >

                     2.2、示例代码:在【messages】集合基础上继续向【comments】字段追加文档内容

                         //原始记录
                         > db.messages.find()
                         { "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "i love u!" } ] }

                         > query={"name":"jim","say":"i want to know you!"}
                         { "name" : "jim", "say" : "i want to know you!" }

                         > db.messages.update({"name":"peny"},{"$push":{"comments":query}})
                         WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                         > db.messages.find()
                         { "_id" : ObjectId("5abdc29b678c8239350e8a20"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "i love u!" }, { "name" : "jim", "say" : "i want to know you!" } ] }
                         >

             4、$each 修改器: $each 修改器、$push 修改器必须组合使用,可以一次增加由多个文档组成的列表,字段有,就追加文档,没有就创建该字段并增加一个由多个文档组成的列表数据

                   documents=[{document1},{document2},{document3}....{documentn}]

                   语法:db.collectionName.update({query},{"$push":{<key>:{"$each":documents}}})

                   参数说明:

                          query:查询条件

                          documents:文档列表,也可以称文档数组

                          key:要操作的字段名

                     在MongoDB数据库中通过 $each 修改器、$push 修改器 和 update()方法配合使用,起到的作用类似一次插入由多个文档组成的列表。

                     2.1、示例代码:【messages】集合中原来没有【comments】字段

                         //原始记录
                         > db.messages.find()
                         { "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0 }

                         >query=[{"name":"tom","say":"hello!"},{"name":"jackey","say":"i love u!"},{"name":"jerry","say":"i want u"}];

                         [
                                  {
                                         "name" : "tom",
                                         "say" : "hello!"
                                  },
                                 {
                                         "name" : "jackey",
                                         "say" : "i love u!"
                                  },
                                  {
                                         "name" : "jerry",
                                         "say" : "i want u"
                                   }
                          ]

                        > db.messages.update({"name":"peny"},{"$push":{"comments":{"$each":query}}})
                        WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                        > db.messages.find()
                        { "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "hello!" }, { "name" : "jackey", "say" : "i love u!" }, { "name" : "jerry", "say" : "i want u" } ] }
                        >

                     2.2、示例代码:在【messages】集合基础上继续向【comments】字段追加文档内容

                         //原始记录
                         > db.messages.find()
                         { "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "hello!" }, { "name" : "jackey", "say" : "i love u!" }, { "name" : "jerry", "say" : "i want u" } ] }

                         > query=[{"name":"jason","say":"i know you!"},{"name":"bob","say":"i miss you!"}];
                         [
                                  {
                                          "name" : "jason",
                                          "say" : "i know you!"
                                  },
                                 {
                                          "name" : "bob",
                                          "say" : "i miss you!"
                                  }
                          ]

                         > db.messages.update({"name":"peny"},{"$push":{"comments":{"$each":query}}})
                         WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                         //追加了文档数据
                         > db.messages.find()
                         { "_id" : ObjectId("5abdc844678c8239350e8a21"), "name" : "peny", "age" : 22, "sex" : 0, "comments" : [ { "name" : "tom", "say" : "hello!" }, { "name" : "jackey", "say" : "i love u!" }, { "name" : "jerry", "say" : "i want u" }, { "name" : "jason", "say" : "i know you!" }, { "name" : "bob", "say" : "i miss you!" } ] }
                         >

                    

             5、$slice 修改器:控制记录保存的条数,如果以前有多条会把以前的清空保存条件所规定的记录,如果操作的字段不存在,就会创建该字段

                   documents=[{document1},{document2},{document3}....{documentn}]

                   语法:db.collectionName.update({query},{$push:{<key>:{$each:documents,$slice:number}}})

                   参数说明:

                          query:查询条件

                          documents:文档列表,也可以称文档数组

                          key:要操作的字段名

                          number:控制显示的数量,正数保留最早的number条记录,负数保留最新的number条记录

                     2.1、示例代码:【messages】集合中原来没有【comments】字段

                         //原始记录
                         > db.messages.find()
                         { "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0 }

                         > var query=[{"name":"lilei","say":"hello"},{"name":"hanmeimei","say":"i miss u"},{"name":"tom","say":"i watch u"},{"monster":"ghost","say":"i want u"}];

                         //保存最早的两条记录,也就是【name】分别是:lilei和hanmeimei
                         > db.messages.update({"name":"peny"},{$push:{"comments":{$each:query,$slice:2}}})

                         WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                         > db.messages.find()
                         { "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "lilei", "say" : "hello" }, { "name" : "hanmeimei", "say" : "i miss u" } ] }
                         >

                     2.2、示例代码:在【messages】集合基础上向【comments】字段文档内容

                         //原始记录
                         > db.messages.find()
                         { "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "lilei", "say" : "hello" }, { "name" : "hanmeimei", "say" : "i miss u" } ] }

                          > var query=[{"name":"tom","say":"i watch u"},{"monster":"ghost","say":"i want u"}];

                          //只会保留最新的记录,也就是【name】的值是:monster的文档
                          > db.messages.update({"name":"peny"},{$push:{"comments":{$each:query,$slice:1}}})
                          WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : -1 })

                          > db.messages.find()
                         { "_id" : ObjectId("5abdceca678c8239350e8a22"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ {"monster":"ghost","say":"i want u"}] }
                          >

             6、$addToSet 修改器:当插入一个数组时,如果数组中有重复记录,只会直插入一条,不会重复插入,会过滤掉重复的记录

                   documents=[{document1},{document2},{document3}...{documentn}]

                   语法:db.collectionName.update({query},{"$addToSet":{<key>:{"$each":documents}}})

                   
                   参数说明:

                         query:查询条件

                         documents:要插入的文档数组,也可以称作是列表,其中可以包含重复的文档

                         <key>:表示要插入数组列表的字段

                   代码实例:

                        //原始数据
                        > db.messages.find()
                       { "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0" }

                        //定义要插入的文档数组,里面有重复记录,只有最后一个文档不同
                        > var documents=[{"name":"bob","say":"hi"},{"name":"bob","say":"hi"},{"name":"bob","say":"hi"},{"name":"bob","say":"hello"}];

                        //执行更新成功
                        > db.messages.update({"name":"peny"},{"$addToSet":{"comments":{"$each":documents}}});
                        WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                        //查询结果,值插入两条记录
                        > db.messages.find()
                       { "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hi" }, { "name" : "bob", "say" : "hello" } ] }
                        >

 

             7、$pop修改器【删除】:从数组中进行向前删除或者向后删除,+1正数表示从尾部开始删除,-1负数表示从头开始删除。

                   语法:db.collectionName.update({query},{"$pop":{<key>:1(从后开始删除)/-1(从头开始删除)}})  

                   参数说明:

                         query:查询条件

                         <key>:表示要执行删除操作的字段名,该字段必须是数组字段

                         1(从后开始删除)/-1(从头开始删除),只能是数字1和-1,其他值非法

                   代码实例:

                        //原始数据
                        > db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hi" }, { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi2" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }
                       //执行删除操作,并且执行成功
                       > db.messages.update({"name":"peny"},{"$pop":{"comments":-1}})
                       WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                       //执行结果,把comments数组的第一个元素删除了
                       > db.messages.find()
                       { "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi2" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }

             8、$pull修改器【删除】:根据指定条件删除数组字段里面的指定文档数据,pop只能删除头部或者尾部的数据

                   语法:db.collectionName.update({query},{"$pull":{<key>:{query2}}})

                   
                   参数说明:

                         query:查询条件

                         documents:要插入的文档数组,也可以称作是列表,其中可以包含重复的文档

                         <key>:表示要执行删除操作的字段名,该字段必须是数组字段

                         query2:查询数组字段中指定文档数据的查询条件
                   

                   代码实例:

                        //原始数据
                        > db.messages.find()
{ "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi2" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }

                        //执行删除操作,并且执行成功
                        > db.messages.update({"name":"peny"},{"$pull":{"comments":{"say":"hi2"}}})
                        WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                        //结果数据,已经删除了说话内容是“hi2”的文档
                        > db.messages.find()
                        { "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }

             9、下标操作符

                   9.1、根据查询条件,确定要修改的记录,然后对数组字段中第n(索引值是n-1)个文档的指定指定字段进行值的修改

                        语法:db.collectionName.update({query},{"$set":{<key>.index.<key2>:<vlaue>}})

                        参数说明:

                              query:查询条件,确定需要修改的文档

                              $set:修改器,对某个字段进行赋值

                              <key>:表示要执行操作的字段名,该字段必须是数组字段,是顶级字段名

                              index:数组字段中包含多个文档,每个文档都对应这个一个具体的下标,不要过界,下标值从0开始,如:comments字段是留言板,该字段里面包含了5个文档,每个文档都是一份具体的留言内容,如果想引用数组字段中的某一个文档,可以通过下标,comments.0.say,表示comments字段里面第一份留言say的内容是什么。

                              key2:具有指定下标值的文档数据的字段名,这个字段的值将会被修改

                              value:把value表示的内容赋给key2所表示的字段

                        示例代码:

                            //原始数据
                            > db.messages.find()
                           { "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "hi3" }, { "name" : "bob", "say" : "hello5" } ] }

                            //需要修改【comments】字段里面下标为【2】的【say】字段的值,修改成功
                            > db.messages.update({"name":"peny"},{"$set":{"comments.2.say":"i am modifing!"}})
                            WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                            //修改成功
                            > db.messages.find()
                           { "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "hi1" }, { "name" : "bob", "say" : "i am modifing!" }, { "name" : "bob", "say" : "hello5" } ] }

                            //修改【comments】字段下标是【1】的【say】字段的值
                            > db.messages.update({"name":"peny"},{"$set":{"comments.1.say":"i am modifing!"}})
                            WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

                            //修改成功
                            > db.messages.find()
                           { "_id" : ObjectId("5ac5b03525eb395526dc108d"), "name" : "peny", "age" : 18, "sex" : "0", "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "i am modifing!" }, { "name" : "bob", "say" : "i am modifing!" }, { "name" : "bob", "say" : "hello5" } ] }

                   9.2、$ 操作符,是一个通配符,可以操作所有符合条件的记录(待测试)

                        语法:db.collectionName.update({query},{"$set":{<key>.$.<key2>:<vlaue>}})

                        参数说明:

                              query:查询条件,确定需要修改的文档

                              $set:修改器,进行赋值操作

                              <key>:表示要执行操作的字段名,该字段必须是数组字段,是顶级字段名

                              $:是指数组字段中所有的文档,不会特指某一个文档

                              key2:具有指定下标值的文档数据的字段名,这个字段就是被修改的

                              value:把value表示的内容赋给key2所表示的字段

                        示例代码:

                             //原始数据

                             > db.students.find()
                            { "_id" : ObjectId("5ac70d2f7a05450cf60c6887"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "bob", "say" : "hello" }, { "name" : "bob", "say" : "i'm changing" }, { "name" : "tom", "say" : "i love y" } ] }

                             //修改留言板里名称是【name】是【bob】的文档,把【say】字段的内容修改为【I'm a robbot】
                             > db.students.update({"comments.name":"bob"},{"$set":{"comments.$.say":"I'm robbot"}})
                             WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
                             >

                             //修改结果
                             > db.students.find()
                            { "_id" : ObjectId("5ac70d2f7a05450cf60c6887"), "name" : "peny", "age" : 18, "sex" : 0, "comments" : [ { "name" : "bob", "say" : "I'm robbot" }, { "name" : "bob", "say" : "i'm changing" }, { "name" : "tom", "say" : "i love y" } ] }

             10、upsert 状态的使用:更新操作,也可以执行插入操作

                   语法:db.collectionName.update({query},{"$set":{<key1>:<value1>,<key2>:<value2>,...<keyn>:<valuen>}},insertBoolean)

                         如果查询条件没有找到相应的文档,该表达式就会执行插入操作

                   语法:db.collectionName.update({query},{"$set":{<key1>:<value1>,<key2>:<value2>,...<keyn>:<valuen>}},insertBoolean,multiBoolean)

                         如果存在多条记录,则会修改所有的文档

                   参数说明:

                        query:查询条件,确定需要修改的文档

                        $set:修改器,用于赋值修改

                        key1-n:要操作的字段名

                        value1-n:需要给key字段赋的值,key和value一一对应。

                        insertBoolean:当记录不存在的时候是否增加记录,true表示增加,false表示不增加

                        multiBoolean:是否需要修改多条记录,true表示可以修改多条记录,false表示修改第一条记录
                        

                   示例代码:

                         //原始数据是空的,
                         > db.students.find()
                         >

                         //按通过修改增加数据
                         > db.students.update({"name":"peny"},{"$set":{"age":20,"sex":0}},true)
                         WriteResult({
                                 "nMatched" : 0,
                                 "nUpserted" : 1,
                                 "nModified" : 0,
                                 "_id" : ObjectId("5ac7187f7da6f59ef2f3836a")
                         })
                         >

                         //数据插入成功
                         > db.students.find()
                         { "_id" : ObjectId("5ac7187f7da6f59ef2f3836a"), "name" : "peny", "age" : 20, "sex" : 0 }
                         >

                         //如果数据库中存在多条名称重复的记录,为每条记录增加字段

                         //原始记录,里面有两个叫bob的文档
                         > db.students.find()
                         { "_id" : ObjectId("5ac7187f7da6f59ef2f3836a"), "name" : "peny", "age" : 20, "sex" : 0 }
                         { "_id" : ObjectId("5ac7197f7a05450cf60c6888"), "name" : "bob", "age" : 23, "sex" : 1 }
                         { "_id" : ObjectId("5ac7198b7a05450cf60c6889"), "name" : "bob", "age" : 18, "sex" : 1 }

                          //修改了两条,执行成功
                          > db.students.update({"name":"bob"},{"$set":{"school":"jiangxi"}},false,true)
                          WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

                          //查看结果,已经为两个叫bob的记录增加了一个叫school的字段。

                          > db.students.find()
                          { "_id" : ObjectId("5ac7187f7da6f59ef2f3836a"), "name" : "peny", "age" : 20, "sex" : 0 }
                          { "_id" : ObjectId("5ac7197f7a05450cf60c6888"), "name" : "bob", "age" : 23, "sex" : 1, "school" : "jiangxi" }
                          { "_id" : ObjectId("5ac7198b7a05450cf60c6889"), "name" : "bob", "age" : 18, "sex" : 1, "school" : "jiangxi" }

三、总结

       今天就写到这里了,有关更新的内容还很多,今天只是介绍一个大概的内容,让大家对MongoDB的操作有一个初步的印象。随着我们学习的深入,还会有更多的内容更新上来,不忘初衷,继续努力吧。

最新文章

  1. Android Native 代码NDK开发学习笔记
  2. [sqoop1.99.7] sqoop命令
  3. UIScrollView在AutoLayout下的滚动问题
  4. 阿里云 OSS+CDN
  5. 为PHP函数执行设置超时
  6. UIImage图片处理,旋转、截取、平铺、缩放等操作
  7. [firefly]暗黑源码解析
  8. 激活office 2013
  9. 纯CSS3实现超立体的3D图片侧翻倾斜效果
  10. BZOJ 1019: [SHOI2008]汉诺塔( dp )
  11. 解决ORA-28000: the account is locked
  12. cookie在不同域名domain、path下的读取规则
  13. 如何更改 iOS 和安卓浏览器上的 input[type=&quot;radio&quot;] 元素的默认样式?
  14. node防xss攻击插件
  15. winform中获取指定文件夹下的所有图片
  16. lua 调用参数报错(a userdata value)
  17. Linux下tar压缩解压缩命令详解
  18. (转!)Pyinstaller 打包发布经验总结
  19. 关于SQL视图的创建和使用方法
  20. 装饰器 以及 django 中的应用

热门文章

  1. NancyFX 第七章 模型绑定和验证
  2. Python多线程爬虫与多种数据存储方式实现(Python爬虫实战2)
  3. Java的大数计算BigNumber
  4. Cesium 一个导致浏览器内存一直增长的方法
  5. SpringBoot工作机制
  6. angular的$scope的使用
  7. [SCOI2010] 连续攻击问题
  8. susmote个人网站博客论坛(TexTec | 关注互联网技术,传播极客精神)
  9. Mycat 分片规则详解--固定 hash 分片
  10. 【itchat】用Python玩耍微信