国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MongoDB干貨篇之?dāng)?shù)據(jù)更新

kidsamong / 2585人閱讀

摘要:默認(rèn)為如果為的話和一樣的效果下面將會(huì)更新所有匹配到的數(shù)據(jù)字段更新操作符用來指定一個(gè)鍵的值。語法當(dāng)對(duì)數(shù)組字段進(jìn)行更新時(shí),且沒有明確指定的元素在數(shù)組中的位置,我們使用定位操作符標(biāo)識(shí)一個(gè)元素,數(shù)字都是以開始的。

MongoDB干貨篇之?dāng)?shù)據(jù)更新 原文地址

https://chenjiabing666.github...

常用的函數(shù)

update(,,,),其中表示篩選的條件,是要更新的數(shù)據(jù)

updateMany() 更新所有匹配到的數(shù)據(jù)

upsert

upsert是一個(gè)布爾類型的數(shù)據(jù),如果為true時(shí),當(dāng)根據(jù)query條件沒有找到匹配的數(shù)據(jù)時(shí),就表示插入此條數(shù)據(jù),如果為false就表示不插入數(shù)據(jù)

下面將會(huì)在一個(gè)空的集合中更新數(shù)據(jù)

//就會(huì)插入此條數(shù)據(jù),因?yàn)闆]有找到匹配的信息
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);   //和上面的語句等價(jià)

//輸出  db.user.find()
{ "_id" : ObjectId("59067b70856d5893a687655f"), "age" : 22, "name" : "chenjiabing", "sex" : "Man", "hobby" : "read" }

multi

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

下面將會(huì)更新所有匹配到的數(shù)據(jù)

db.user.update({name:"chenjiabing"},{$set:{"hobby":"code"}},{"multi":true});   
字段更新操作符 Field Update Operators $set

$set用來指定一個(gè)鍵的值。如果這個(gè)鍵不存在,則創(chuàng)建它。注意這里的更新默認(rèn)是只更新第一條匹配到的數(shù)據(jù),如果第一條匹配的數(shù)據(jù)已經(jīng)滿足修改后的條件,那么將不會(huì)執(zhí)行下面匹配的信息

下面我們將會(huì)添加一條信息在數(shù)據(jù)庫中

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

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

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

下面將會(huì)修改用戶的年齡

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

下面用$set修改數(shù)據(jù)類型,將sex設(shè)置為1

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

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

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

從文檔中移除指定的鍵

下面將要?jiǎng)h除上面插入的hobby

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

$inc修改器用來增加已有鍵的值,或者在鍵不存在時(shí)創(chuàng)建一個(gè)鍵$inc就是專門來增加(和減少)數(shù)字的。$inc只能用于整數(shù)、長(zhǎng)整數(shù)或雙精度浮點(diǎn)數(shù)。要是用在其他類型的數(shù)據(jù)上就會(huì)導(dǎo)致操作失敗

例如毎次有人訪問該博文,該條博文的瀏覽數(shù)就加1,用鍵pageViews保存瀏覽數(shù)信息。這個(gè)鍵值上面沒有定義過,所以會(huì)自動(dòng)創(chuàng)建一個(gè)

db.user.update({name:"jack"},{$inc:{"pageViews":1}});    //起初沒有就會(huì)自動(dòng)創(chuàng)建一個(gè)鍵

下面演示增加和減少

db.user.update({name:"jack"},{$inc:{"pageViews":100}})  ;  //這里是在上面的基礎(chǔ)上加上100,此時(shí)變成了101

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

語法:{$rename: { : , : , ... } }

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

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

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

db.user.update({name:"chenjiabing"},{$rename:{"age":"Age"}})   //重命名age為Age

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

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

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

db.user.update({name:"chenjiabing"},{"$rename":{"sex","age"}});  //這里sex變成age和原來的age相同,那么原來的age就會(huì)丟失

db.user.find({name:"chenjiabing"});  

//輸出,可以看到原來的age沒有了,變成了覆蓋之后的

{ "_id" : ObjectId("590674ce30b9f88dd43d7ee4"), "name" : "chenjiabing", "age" : "Man", "school" : { "name" : "jsnu", "city" : "beijing" } }   

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

db.user.update({name:"chenjiabing"},{$rename:{value:"name"}});  //將不會(huì)有任何的改變,因?yàn)関alue這個(gè)字段根本不存在

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

db.user.update({name:"chenjiabing"},{$rename:{"school.name":"contact.name"}});// 這里將會(huì)將school.name這個(gè)字段的值移到contact.name之中,如果contact不存在,那么就會(huì)創(chuàng)建一個(gè)

//輸出

{ "_id" : ObjectId("590674ce30b9f88dd43d7ee4"), "name" : "chenjiabing", "age" : "Man", "school" : { "city" : "beijing" }, "contact" : { "name" : "jsnu" } }

數(shù)組更新操作符 Array Update Operators

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

$ (query)

語法: { ".$" : value }

當(dāng)對(duì)數(shù)組字段進(jìn)行更新時(shí),且沒有明確指定的元素在數(shù)組中的位置,我們使用定位操作符$標(biāo)識(shí)一個(gè)元素,數(shù)字都是以0開始的。

注意

:::info

定位操作符("$")作為第一個(gè)匹配查詢條件的元素的占位符,也就是在數(shù)組中的索引值。

數(shù)組字段必須出現(xiàn)查詢文檔中。

:::

向集合中插入兩條數(shù)據(jù)

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

執(zhí)行下列操作

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

如果指定的鍵已經(jīng)存在,會(huì)向已有的數(shù)組末尾加入一個(gè)元素,要是沒有就會(huì)創(chuàng)建一個(gè)新的數(shù)組。

下面我們將使用$push對(duì)該文檔添加一條評(píng)論信息。

//將會(huì)創(chuàng)建一個(gè)comments數(shù)組,因?yàn)橐婚_始這個(gè)數(shù)組沒有存在
db.user.update({name:"chenjiabing"},{$push:{comments:{"name":"jack","content":"hello thanks"}}})


//繼續(xù)添加一條,在comments的末尾進(jìn)行添加,此時(shí)comments變成兩條數(shù)據(jù)了
db.user.update({name:"chenjiabing"},{$push:{comments:{"name":"john","content":"hello"}}})
$pull

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

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

執(zhí)行如下操作

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

//Result
{ votes: [ 3, 5, 6, 8 ] }

{ votes: [ 3, 5, 6 ] }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/19010.html

相關(guān)文章

  • MongoDB干貨篇之查詢

    摘要:如果的值大于數(shù)組中元素的數(shù)量,該查詢返回?cái)?shù)組中的所有元素的。數(shù)組參數(shù)使用格式,其中第一個(gè)值表示在數(shù)組中跳過的項(xiàng)目數(shù)第二個(gè)值表示返回的項(xiàng)目數(shù)。 MongoDB干貨篇之查詢 準(zhǔn)備工作 在開始之前我們應(yīng)該先準(zhǔn)備數(shù)據(jù)方便演示,這里我插入的了幾條數(shù)據(jù),數(shù)據(jù)如下: db.user.insertMany( [{ name:jack, age:22, sex:M...

    RdouTyping 評(píng)論0 收藏0
  • JQuery 干貨篇之選擇元素

    摘要:干貨篇之選擇元素實(shí)驗(yàn)的的代碼選擇器選擇正在處理動(dòng)畫的元素選擇第一個(gè)元素選擇最后一個(gè)元素選擇第個(gè)元素從開始選擇序號(hào)為偶數(shù)的元素選擇序號(hào)為奇數(shù)的元素選擇序號(hào)大于的元素選擇序號(hào)小于的元素選擇所有的文本輸入框 JQuery 干貨篇之選擇元素 實(shí)驗(yàn)的HTML+CSS的代碼 html Example Jacquis Flower Shop ...

    zorpan 評(píng)論0 收藏0
  • MongoDB學(xué)習(xí)札記第六篇之主從復(fù)制

    摘要:系列文章請(qǐng)看環(huán)境準(zhǔn)備主從復(fù)制是中最常見的復(fù)制方式。本次試驗(yàn)中,我們采用一個(gè)主節(jié)點(diǎn),一個(gè)從節(jié)點(diǎn)。重啟一下即可正常運(yùn)行。執(zhí)行完這條語句之后既可以正常操作了。具體怎么創(chuàng)建用戶參考學(xué)習(xí)札記第二篇之安全參考權(quán)威指南官網(wǎng)手冊(cè) mongo系列文章請(qǐng)看http://www.codefrom.com/p/mongodb 環(huán)境準(zhǔn)備: ubuntu12.0.4 mongodb3.0....

    guyan0319 評(píng)論0 收藏0
  • JQuery干貨篇之處理元素

    摘要:表示要設(shè)置的屬性名稱,返回值就是要設(shè)置的屬性值實(shí)例設(shè)置字體大小使用相對(duì)值設(shè)置屬性值,在原有的基礎(chǔ)上加上獲取標(biāo)簽的字體同時(shí)設(shè)置多個(gè)屬性方法方法設(shè)置或返回被選元素的文本內(nèi)容。 JQuery干貨篇之處理元素 注意這里用的還是我前兩篇用的例子,詳情請(qǐng)看我的博客 attr attr() 方法設(shè)置或返回被選元素的屬性值。 語法: $(selector).attr(attribute) 返回被選...

    tuantuan 評(píng)論0 收藏0
  • JQuery干貨篇之處理元素

    摘要:表示要設(shè)置的屬性名稱,返回值就是要設(shè)置的屬性值實(shí)例設(shè)置字體大小使用相對(duì)值設(shè)置屬性值,在原有的基礎(chǔ)上加上獲取標(biāo)簽的字體同時(shí)設(shè)置多個(gè)屬性方法方法設(shè)置或返回被選元素的文本內(nèi)容。 JQuery干貨篇之處理元素 注意這里用的還是我前兩篇用的例子,詳情請(qǐng)看我的博客 attr attr() 方法設(shè)置或返回被選元素的屬性值。 語法: $(selector).attr(attribute) 返回被選...

    weij 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<