亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

MongoDB數據更新方法干貨篇

2020-03-14 12:57:48
字體:
來源:轉載
供稿:網友

前言

數據更新是我們日常操作數據庫必不可少的一部分,下面這篇文章就給大家分享了操作MongoDB數據更新的一些干貨,對大家具有一定的參考學習價值,一起來學習學習吧。

常用的函數

  • update(<query>,<update>,<upsert>,<multi>) ,其中<query>表示篩選的條件,<update>是要更新的數據
  • updateMany() 更新所有匹配到的數據

upsert

upsert是一個布爾類型的數據,如果為true時,當根據query條件沒有找到匹配的數據時,就表示插入此條數據,如果為false就表示不插入數據

下面將會在一個空的集合中更新數據

//就會插入此條數據,因為沒有找到匹配的信息db.user.update({'name':'chenjiabing','age':22,'sex':"Man"},{$set:{'hobby':'read'}},{'upsert':true}); db.user.update({'name':'chenjiabing','age':22,'sex':"Man"},{$set:{'hobby':'read'}},true); //和上面的語句等價//輸出 db.user.find(){ "_id" : ObjectId("59067b70856d5893a687655f"), "age" : 22, "name" : "chenjiabing", "sex" : "Man", "hobby" : "read" }

multi

如果這個參數為true,就把按條件查出來多條記錄全部更新。默認為false,如果為true的話和updateMany()一樣的效果

下面將會更新所有匹配到的數據

db.user.update({name:'chenjiabing'},{$set:{'hobby':'code'}},{'multi':true});

字段更新操作符 Field Update Operators

$set

$set用來指定一個鍵的值。如果這個鍵不存在,則創建它。注意這里的更新默認是只更新第一條匹配到的數據,如果第一條匹配的數據已經滿足修改后的條件,那么將不會執行下面匹配的信息

下面我們將會添加一條信息在數據庫中

db.user.insert({"name":'jack',"age":22,"sex":'Man','school':{'name':'jsnu','city':'xuzhou'}});

運行下面的代碼,將該用戶的興趣設置為“讀書”并添加至文檔中(此時文檔中hobby鍵是不存在,該條文檔就會創建它)

db.user.update({name:'jack'},{$set:{'hobby':'read'}})

下面將會修改用戶的年齡

db.user.update({'name':'jack'},{$set:{'age':20}})

下面用$set修改數據類型,將sex設置為1

db.user.update({'name':'jack'},{$set:{'sex':1}})

下面用$set修改內嵌文檔,必須指定文檔的名字和鍵值

db.user.update({name:'jack'},{$set:{'school.name':'shida','school.city':'beijing'}})

$unset

從文檔中移除指定的鍵

下面將要刪除上面插入的hobby鍵

db.user.update({name:'jack'},{$unset:{'hobby':1}}) //這里的值是任意給的,隨便什么值

$inc

$inc修改器用來增加已有鍵的值,或者在鍵不存在時創建一個鍵$inc就是專門來增加(和減少)數字的。$inc只能用于整數、長整數或雙精度浮點數。要是用在其他類型的數據上就會導致操作失敗

例如毎次有人訪問該博文,該條博文的瀏覽數就加1,用鍵pageViews保存瀏覽數信息。這個鍵值上面沒有定義過,所以會自動創建一個

db.user.update({name:'jack'},{$inc:{'pageViews':1}}); //起初沒有就會自動創建一個鍵

下面演示增加和減少

db.user.update({name:'jack'},{$inc:{'pageViews':100}}) ; //這里是在上面的基礎上加上100,此時變成了101db.user.update({name:'jack'},{$inc:{"pageViews":-100}}) ; //這里是在上面的基礎上減去100,此時還是變成了1

$rename

語法: {$rename: { <old name1>: <new name1>, <old name2>: <new name2>, ... } }

$rename操作符可以重命名字段名稱,新的字段名稱不能和文檔中現有的字段名相同。

下面重新插入一條數據,并且改變這條數據的鍵的名稱

db.user.insert({name:'chenjiabing','age':22,'sex':'Man','school':{'name':'jsnu','city':'beijing'}});db.user.update({name:'chenjiabing'},{$rename:{'age':'Age'}}) //重命名age為Age

下面將要演示怎樣改變內嵌文檔的鍵的名稱,注意一定要帶上文檔的名字

db.user.update({name:'chenjiabing'},{$rename:{'school.name':'school.Name','school.city':'school.City'}});

如果重命名的字段字和集合中原有的字段名字相同的話就會覆蓋原有的字段名稱,那么就會造成數據的丟失

db.user.update({name:'chenjiabing'},{'$rename':{'sex','age'}}); //這里sex變成age和原來的age相同,那么原來的age就會丟失db.user.find({name:'chenjiabing'}); //輸出,可以看到原來的age沒有了,變成了覆蓋之后的{ "_id" : ObjectId("590674ce30b9f88dd43d7ee4"), "name" : "chenjiabing", "age" : "Man", "school" : { "name" : "jsnu", "city" : "beijing" } }

如果指定的字段不存在,那么將不會更新,對原來的字段沒有影響

db.user.update({name:'chenjiabing'},{$rename:{value:'name'}}); //將不會有任何的改變,因為value這個字段根本不存在

$rename操作符也可以將子文檔中鍵值移到其他子文檔中

db.user.update({name:'chenjiabing'},{$rename:{'school.name':'contact.name'}});// 這里將會將school.name這個字段的值移到contact.name之中,如果contact不存在,那么就會創建一個//輸出{ "_id" : ObjectId("590674ce30b9f88dd43d7ee4"), "name" : "chenjiabing", "age" : "Man", "school" : { "city" : "beijing" }, "contact" : { "name" : "jsnu" } }

數組更新操作符 Array Update Operators

只能用在鍵值為數組的鍵上的數組操作。
$ (query)

語法: { "<array>.$" : value }

當對數組字段進行更新時,且沒有明確指定的元素在數組中的位置,我們使用定位操作符$標識一個元素,數字都是以0開始的。

注意:

  • 定位操作符(“$”)作為第一個匹配查詢條件的元素的占位符,也就是在數組中的索引值。
  • 數組字段必須出現查詢文檔中。

向集合中插入兩條數據

db.students.insert({ "_id" : 1, "grades" : [ 78, 88, 88 ] });db.students.insert({ "_id" : 2, "grades" : [ 88, 90, 92 ] });

執行下列操作

//查詢匹配的文檔中,數組有2個88,只更新第一個匹配的元素,也就是"grades.1"db.students.update( { _id: 1, grades: 88 }, { $set: { "grades.$" : 82 } }) ;//查詢文檔中沒有出現grades字段,查詢報錯db.students.update( { _id: 2 }, { $set: { "grades.$" : 82 } } );

$push

如果指定的鍵已經存在,會向已有的數組末尾加入一個元素,要是沒有就會創建一個新的數組。

下面我們將使用$push對該文檔添加一條評論信息。

//將會創建一個comments數組,因為一開始這個數組沒有存在db.user.update({name:'chenjiabing'},{$push:{comments:{'name':'jack','content':'hello thanks'}}})//繼續添加一條,在comments的末尾進行添加,此時comments變成兩條數據了db.user.update({name:'chenjiabing'},{$push:{comments:{'name':'john','content':'hello'}}})

$pull

語法:db.collection.update( { field: <query> }, { $pull: { field: <query> } } );

$pull操作符移除指定字段值為數組,且匹配$pull操作符移除指定字段值為數組,且匹配$pull語句聲明的查詢條件的所有元素。

執行如下操作

//插入一條文檔db.profiles.insert({ votes: [ 3, 5, 6, 7, 7, 8 ] });//移除數組中所有元素7db.profiles.update( { votes: 3 }, { $pull: { votes: 7 } } );//移除數組中所有大于6的元素db.profiles.update( { votes: 3 }, { $pull: { votes: { $gt: 6 } } } );//Result{ votes: [ 3, 5, 6, 8 ] }{ votes: [ 3, 5, 6 ] }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到MongoDB頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄色中文字幕| 国产精品三级久久久久久电影| 久久久亚洲精选| 7777精品久久久久久| 国产精品激情av电影在线观看| 国产精品私拍pans大尺度在线| 欧美激情综合色| 精品亚洲一区二区三区四区五区| 精品日韩中文字幕| 成人97在线观看视频| 久久久人成影片一区二区三区| 在线观看欧美日韩国产| 国产性猛交xxxx免费看久久| 4438全国亚洲精品在线观看视频| 国产精品福利在线| 97精品国产97久久久久久春色| 国产亚洲免费的视频看| 色婷婷综合成人av| 国产精品成av人在线视午夜片| 色悠久久久久综合先锋影音下载| www.欧美三级电影.com| 欧美日韩亚洲精品内裤| 欧美电影电视剧在线观看| 中文字幕亚洲欧美一区二区三区| 热99精品只有里视频精品| 国产精品91视频| 2021国产精品视频| 美女久久久久久久| 国产成人免费av电影| 欧美一级视频一区二区| 欧美一二三视频| 久久综合色88| 成人黄色免费在线观看| 国产欧美一区二区三区在线看| 欧美色欧美亚洲高清在线视频| 欧美在线免费观看| 欧美激情精品久久久久久蜜臀| 最近免费中文字幕视频2019| 国产亚洲欧洲高清| 国产伦精品免费视频| 亲爱的老师9免费观看全集电视剧| 人人做人人澡人人爽欧美| 国产成人黄色av| 日韩理论片久久| 亚洲国产成人爱av在线播放| 精品亚洲一区二区三区| 欧美性黄网官网| 奇米一区二区三区四区久久| 91中文字幕在线| 欧美高清在线视频观看不卡| 亚洲精品99久久久久中文字幕| 国产+成+人+亚洲欧洲| 欧美日韩综合视频网址| 精品国产91乱高清在线观看| 亚洲精品电影网站| 精品成人乱色一区二区| 亚洲精品国产精品国产自| 亚洲精品一区中文| 91精品视频免费观看| 久久久久久成人| 美女扒开尿口让男人操亚洲视频网站| 好吊成人免视频| 欧美激情第1页| 在线观看国产精品91| 在线观看日韩欧美| 国产美女久久精品| 欧美第一黄色网| 精品久久久久久久久中文字幕| 亚洲аv电影天堂网| 日韩av中文在线| 久久亚洲精品成人| 高清视频欧美一级| 日本一区二区在线免费播放| 精品国偷自产在线视频| 亚洲精品久久在线| 国产精品激情自拍| 色综合久久天天综线观看| 亚洲综合第一页| 久久久久久久久久久人体| 日韩精品电影网| 欧美性高跟鞋xxxxhd| 国产精品激情自拍| 亚洲免费av片| 国内精品久久久久影院 日本资源| 欧美性猛交xxxx偷拍洗澡| 亚洲国产成人在线播放| 国产精品视频精品视频| 成人免费福利视频| 国产在线观看一区二区三区| 久久免费精品日本久久中文字幕| 久久亚洲电影天堂| 欧美精品亚州精品| 国产精品色午夜在线观看| 亚洲欧美在线一区| 97成人精品视频在线观看| 日韩中文字幕欧美| 欧美尺度大的性做爰视频| 久久久久久有精品国产| 大胆人体色综合| 亚洲一区二区免费| 日韩动漫免费观看电视剧高清| 国产精品激情av在线播放| 综合136福利视频在线| 中文字幕九色91在线| 91久久久国产精品| 欧美一级成年大片在线观看| 国产视频久久久久久久| 国产精品香蕉国产| 亚洲已满18点击进入在线看片| 九九综合九九综合| yellow中文字幕久久| 伊人亚洲福利一区二区三区| 亚洲男人天天操| 亚洲欧美日韩精品久久| 色七七影院综合| 国产精品专区一| 国产精品日韩久久久久| 91网在线免费观看| 久久国产色av| 伊人久久五月天| 国产日韩亚洲欧美| 日韩精品视频免费| 国产精品成人品| 日韩亚洲精品电影| 日韩大陆毛片av| 日韩亚洲第一页| 精品偷拍一区二区三区在线看| 亚洲成人网久久久| www.久久久久久.com| 亚洲人成免费电影| 911国产网站尤物在线观看| www.亚洲人.com| 久久香蕉精品香蕉| 久久视频在线视频| 欧美日韩国产综合新一区| 欧洲成人在线视频| 国产欧美婷婷中文| 免费不卡欧美自拍视频| 97精品一区二区三区| 亚洲综合在线小说| 91九色视频在线| 亚洲福利精品在线| 亚洲欧洲美洲在线综合| 2020久久国产精品| 久久精品电影网| 91亚洲精品久久久久久久久久久久| 日本精品视频在线| 亚洲日韩中文字幕在线播放| 久久亚洲国产精品成人av秋霞| 精品少妇一区二区30p| 日韩精品极品毛片系列视频| 97在线视频一区| 国产亚洲视频在线观看| 91天堂在线视频| 中文字幕亚洲综合久久| 亚洲第一男人av| 亚洲国产精品中文| 欧美超级免费视 在线| 深夜成人在线观看| 97精品伊人久久久大香线蕉| 黄色一区二区在线| 久久九九有精品国产23| 色午夜这里只有精品| 琪琪第一精品导航|