摘要:默認為如果為的話和一樣的效果下面將會更新所有匹配到的數據字段更新操作符用來指定一個鍵的值。語法當對數組字段進行更新時,且沒有明確指定的元素在數組中的位置,我們使用定位操作符標識一個元素,數字都是以開始的。
MongoDB干貨篇之數據更新 原文地址
常用的函數https://chenjiabing666.github...
upsertupdate(
, ,其中, , ) 表示篩選的條件, 是要更新的數據 updateMany() 更新所有匹配到的數據
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,此時變成了101 db.user.update({name:"jack"},{$inc:{"pageViews":-100}}) ; //這里是在上面的基礎上減去100,此時還是變成了1$rename
語法:{$rename: {
: , : , ... } } $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)只能用在鍵值為數組的鍵上的數組操作。
語法: { "
.$" : value } 當對數組字段進行更新時,且沒有明確指定的元素在數組中的位置,我們使用定位操作符$標識一個元素,數字都是以0開始的。
注意
:::info
定位操作符("$")作為第一個匹配查詢條件的元素的占位符,也就是在數組中的索引值。
數組字段必須出現查詢文檔中。
:::
向集合中插入兩條數據
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:
}, { $pull: { field: } } ); $pull操作符移除指定字段值為數組,且匹配$pull操作符移除指定字段值為數組,且匹配$pull語句聲明的查詢條件的所有元素。
執行如下操作
//插入一條文檔 db.profiles.insert({ votes: [ 3, 5, 6, 7, 7, 8 ] }); //移除數組中所有元素7 db.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 ] }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19010.html
摘要:如果的值大于數組中元素的數量,該查詢返回數組中的所有元素的。數組參數使用格式,其中第一個值表示在數組中跳過的項目數第二個值表示返回的項目數。 MongoDB干貨篇之查詢 準備工作 在開始之前我們應該先準備數據方便演示,這里我插入的了幾條數據,數據如下: db.user.insertMany( [{ name:jack, age:22, sex:M...
摘要:干貨篇之選擇元素實驗的的代碼選擇器選擇正在處理動畫的元素選擇第一個元素選擇最后一個元素選擇第個元素從開始選擇序號為偶數的元素選擇序號為奇數的元素選擇序號大于的元素選擇序號小于的元素選擇所有的文本輸入框 JQuery 干貨篇之選擇元素 實驗的HTML+CSS的代碼 html Example Jacquis Flower Shop ...
摘要:系列文章請看環境準備主從復制是中最常見的復制方式。本次試驗中,我們采用一個主節點,一個從節點。重啟一下即可正常運行。執行完這條語句之后既可以正常操作了。具體怎么創建用戶參考學習札記第二篇之安全參考權威指南官網手冊 mongo系列文章請看http://www.codefrom.com/p/mongodb 環境準備: ubuntu12.0.4 mongodb3.0....
摘要:表示要設置的屬性名稱,返回值就是要設置的屬性值實例設置字體大小使用相對值設置屬性值,在原有的基礎上加上獲取標簽的字體同時設置多個屬性方法方法設置或返回被選元素的文本內容。 JQuery干貨篇之處理元素 注意這里用的還是我前兩篇用的例子,詳情請看我的博客 attr attr() 方法設置或返回被選元素的屬性值。 語法: $(selector).attr(attribute) 返回被選...
摘要:表示要設置的屬性名稱,返回值就是要設置的屬性值實例設置字體大小使用相對值設置屬性值,在原有的基礎上加上獲取標簽的字體同時設置多個屬性方法方法設置或返回被選元素的文本內容。 JQuery干貨篇之處理元素 注意這里用的還是我前兩篇用的例子,詳情請看我的博客 attr attr() 方法設置或返回被選元素的屬性值。 語法: $(selector).attr(attribute) 返回被選...
閱讀 1318·2021-09-22 15:00
閱讀 3314·2019-08-30 14:00
閱讀 1230·2019-08-29 17:27
閱讀 1226·2019-08-29 16:35
閱讀 696·2019-08-29 16:14
閱讀 2047·2019-08-26 13:43
閱讀 2126·2019-08-26 11:35
閱讀 2314·2019-08-23 15:34