MongoDb進階實踐之五 MongoDB修改命令詳述



一、引言

         上一篇文章我們已經詳細介紹了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的對象和一些更新的操作符(如$set,$inc...)等,也可以理解為sql update查詢內set后面的

                             upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入新的文檔,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的操作有一個初步的印象。隨着我們學習的深入,還會有更多的內容更新上來,不忘初衷,繼續努力吧。
                                                                                     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM