欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mongodb在UPDATE操作中使用$pull的操作方法

 更新時(shí)間:2024年06月19日 10:49:13   作者:威贊  
在UPDATE中使用$pull操作符,刪除數(shù)組中的指定元素或刪除符合條件的數(shù)組元素,本文基于Mongodb的官方文檔,介紹使用$pull,?按照指定條件刪除數(shù)組中的元素,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下

本文基于Mongodb的官方文檔,介紹使用$pull, 按照指定條件刪除數(shù)組中的元素。

定義

在UPDATE中使用$pull操作符,刪除數(shù)組中的指定元素或刪除符合條件的數(shù)組元素。

語(yǔ)法

在UPDATE操作中使用$pull操作符時(shí),按照下面的語(yǔ)法。

{$pull: {<field1>: <value|condition>, <field2>: <value|condition>, ...}}

刪除嵌入文檔或數(shù)組當(dāng)中的數(shù)組元素時(shí),需要使用點(diǎn)操作符。

行為

  • 自mongodb5.0開(kāi)始,UPDATE操作按照字段名稱的字典順序更新字段。當(dāng)字段中包含數(shù)字時(shí),按照數(shù)字順序依次更新字段。當(dāng)然,對(duì)一個(gè)文檔的多個(gè)字段操作,是原子性的。
  • 當(dāng)在嵌入文檔數(shù)組類型的數(shù)組指定一個(gè)刪除條件時(shí),$pull操作符的刪除條件類似于集合中的文檔查詢條件一樣查詢出數(shù)組中的每一個(gè)文檔元素。
  • 當(dāng)指定刪除的值是數(shù)組時(shí),指定的數(shù)組必須嚴(yán)格等于刪除字段中數(shù)組元素,包括數(shù)組元素的順序。
  • 當(dāng)指定刪除的值是文檔時(shí),要求文檔中的字段和即將刪除元素文檔中的字段和值相同,字段順序可以不一致。
  • mongodb 5.0版本以后,向$pull傳入空表達(dá)式({ })時(shí),mongodb不再拋出錯(cuò)誤。空表達(dá)式不會(huì)修改字段值 ,也不會(huì)在oplog中,添加新的操作記錄。

應(yīng)用

刪除數(shù)組當(dāng)中與指定值相等的元素

創(chuàng)建stores集合

db.stores.insertMany([
    {
        _id:1, 
        fruits: ["apples", "pears", "oranges", "grapes", "bananas"],
        vegetables: ["carrots", "celery", "squash", "carrots"]
    },
    {
        _id:2, 
        fruits: ["plums", "kiwis", "oranges", "bananas", "apples"],
        vegetables: ["broccoli", "zucchini", "carrots", "onions"]
    }
    ])

構(gòu)建數(shù)據(jù)更新語(yǔ)句,刪除fruits數(shù)組中的元素"apples", "oranges",刪除vegetables數(shù)組中的元素"carrots"

db.stores.updateMany({},{$pull:{fruits:{$in: ["apples", "oranges"]}, vegetables: "carrots"}})

查詢數(shù)據(jù)更新后的結(jié)果

刪除數(shù)組中符合查詢條件的元素

創(chuàng)建集合profile,其中votes是數(shù)組類型字段

db.profile.insertOne({_id: 1, votes:[3,5,6,7,7,8]})

構(gòu)建數(shù)據(jù)更新語(yǔ)句,刪除votes字段中大于等于6的數(shù)據(jù)。

db.profile.updateOne({_id: 1}, {$pull: {votes: {$gte: 6}}})

查詢操作結(jié)果

使用bulkWrite()方法完成數(shù)組元素刪除操作

構(gòu)建一個(gè)bulkWrite操作過(guò)程,完成下面幾個(gè)步驟

  • 向集合中插入數(shù)據(jù),其中字段votes是數(shù)組字段
  • 更新插入的數(shù)據(jù),刪除大于等于6的元素
  • 更新插入的數(shù)據(jù),刪除小于等于3的元素
try{
   db.profileBulkWrite.bulkWrite([
       {
           insertOne: {
               "document": {_id: 1, votes: [3,5,6,7,7,8]}
           }
       },
       {
           updateOne: {
               "filter": {_id: 1},
               "update": {$pull: {votes: {$gte: 6}}}
           }
       },
       {
           updateOne: {
               "filter": {_id: 1},
               "update": {$pull: {votes: {$lte: 3}}}
           }
       }
       ])
} catch (error){
    print(error)
}

查詢bulkWrite()操作結(jié)果

db.profileBulkWrite.find()

刪除數(shù)組中的文檔

創(chuàng)建survey并插入數(shù)據(jù),其中results字段是文檔數(shù)組類型

db.survey.insertMany([
    {_id: 1, results: [{item: "A", score: 5}, {item: "B", score: 8}]},
    {_id: 2, results: [{item: "C", score: 8}, {item: "B", score: 4}]}
])

構(gòu)架數(shù)據(jù)更新語(yǔ)句,刪除results數(shù)組中score字段是8,item字段是B的文檔。

db.survey.updateMany({},{$pull: {results: {score: 8, item: "B"}}})

刪除嵌套數(shù)組中的文檔

創(chuàng)建survey文檔并插入數(shù)據(jù)

db.survey.insertMany([
    {_id: 1, results: [
        {item: "A", score: 5, answers:[{q:1, a:4}, {q:2, a:6}]}, 
        {item: "B", score: 8, answers:[{q:1, a:8}, {q:2, a:9}]}
    ]},
    {_id: 2, results: [
        {item: "C", score: 8, answers:[{q:1, a:8}, {q:2, a:7}]}, 
        {item: "B", score: 4, answers:[{q:1, a:0}, {q:2, a:8}]}
    ]}
])

構(gòu)建數(shù)據(jù)更新語(yǔ)句,將包含q的值為2, a的值大于等于8的文檔從results數(shù)組中刪除

db.survey.updateMany({},{ $pull: { "results": {
    answers: {
        $elemMatch: {
            q: 2,
            a: { $gte: 8 }
        }
    }
} } })

到此這篇關(guān)于Mongodb在UPDATE操作中使用$pull的操作方法的文章就介紹到這了,更多相關(guān)Mongodb使用$pull操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows與mac安裝mongodb數(shù)據(jù)庫(kù)的方法步驟與注意事項(xiàng)

    windows與mac安裝mongodb數(shù)據(jù)庫(kù)的方法步驟與注意事項(xiàng)

    今天小編就為大家分享一篇關(guān)于windows與mac安裝mongodb數(shù)據(jù)庫(kù)的方法步驟與注意事項(xiàng),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • 淺談MongoDB內(nèi)部的存儲(chǔ)原理

    淺談MongoDB內(nèi)部的存儲(chǔ)原理

    這篇文章主要介紹了淺談MongoDB內(nèi)部的存儲(chǔ)原理,MongoDB是一個(gè)面向文檔的數(shù)據(jù)庫(kù)系統(tǒng)。使用C++編寫(xiě),不支持SQL,但有自己功能強(qiáng)大的查詢語(yǔ)法,需要的朋友可以參考下
    2023-07-07
  • MongoDB數(shù)據(jù)庫(kù)類replace替換字符串指定內(nèi)容

    MongoDB數(shù)據(jù)庫(kù)類replace替換字符串指定內(nèi)容

    mongoDB是沒(méi)有定義replace函數(shù)的,那么如果有需求需要替換nongo中數(shù)據(jù)的某一部分,怎么辦?下面這篇文章主要給大家介紹了關(guān)于MongoDB數(shù)據(jù)庫(kù)類replace替換字符串指定內(nèi)容的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • MongoDB數(shù)據(jù)庫(kù)兩階段提交實(shí)現(xiàn)事務(wù)的方法詳解

    MongoDB數(shù)據(jù)庫(kù)兩階段提交實(shí)現(xiàn)事務(wù)的方法詳解

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫(kù)兩階段提交實(shí)現(xiàn)事務(wù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了MongoDB數(shù)據(jù)庫(kù)事務(wù)提交、回滾、撤銷等操作的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備及使用介紹

    MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備及使用介紹

    這篇文章主要為大家介紹了MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備以及基本的使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB快速入門筆記(一)之windows下安裝MongoDB方法

    MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由 C++ 語(yǔ)言編寫(xiě)。本文重點(diǎn)給大家介紹MongoDB快速入門筆記(一)之windows下安裝MongoDB方法,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-06-06
  • 如何利用MongoDB存儲(chǔ)Docker日志詳解

    如何利用MongoDB存儲(chǔ)Docker日志詳解

    這篇文章主要給大家介紹了關(guān)于如何利用MongoDB存儲(chǔ)Docker日志的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友沒(méi)呢下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • mongodb中非常好用的Aggregate入門教程

    mongodb中非常好用的Aggregate入門教程

    這篇文章主要給大家介紹了關(guān)于mongodb中非常好用的Aggregate的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧
    2018-12-12
  • MongoDB聚合group的操作指南

    MongoDB聚合group的操作指南

    這篇文章主要給大家介紹了關(guān)于MongoDB聚合group的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • MongoDB釋放空閑空間的幾種常用方法

    MongoDB釋放空閑空間的幾種常用方法

    這篇文章主要給大家介紹了關(guān)于MongoDB釋放空閑空間的幾種常用方法,分別包括compact、db.repairDatabase()、secondary節(jié)點(diǎn)重同步以及db.copyDatabase()這幾種方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧
    2018-07-07

最新評(píng)論