MongoDB

关注公众号 jb51net

关闭
首页 > 数据库 > MongoDB > Mongodb使用$pull操作

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

作者:威赞

在UPDATE中使用$pull操作符,删除数组中的指定元素或删除符合条件的数组元素,本文基于Mongodb的官方文档,介绍使用$pull, 按照指定条件删除数组中的元素,文中通过代码示例介绍的非常详细,需要的朋友可以参考下

本文基于Mongodb的官方文档,介绍使用$pull, 按照指定条件删除数组中的元素。

定义

在UPDATE中使用$pull操作符,删除数组中的指定元素或删除符合条件的数组元素。

语法

在UPDATE操作中使用$pull操作符时,按照下面的语法。

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

删除嵌入文档或数组当中的数组元素时,需要使用点操作符。

行为

应用

删除数组当中与指定值相等的元素

创建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"]
    }
    ])

构建数据更新语句,删除fruits数组中的元素"apples", "oranges",删除vegetables数组中的元素"carrots"

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

查询数据更新后的结果

删除数组中符合查询条件的元素

创建集合profile,其中votes是数组类型字段

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

构建数据更新语句,删除votes字段中大于等于6的数据。

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

查询操作结果

使用bulkWrite()方法完成数组元素删除操作

构建一个bulkWrite操作过程,完成下面几个步骤

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()操作结果

db.profileBulkWrite.find()

删除数组中的文档

创建survey并插入数据,其中results字段是文档数组类型

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}]}
])

构架数据更新语句,删除results数组中score字段是8,item字段是B的文档。

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

删除嵌套数组中的文档

创建survey文档并插入数据

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}]}
    ]}
])

构建数据更新语句,将包含q的值为2, a的值大于等于8的文档从results数组中删除

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

到此这篇关于Mongodb在UPDATE操作中使用$pull的操作方法的文章就介绍到这了,更多相关Mongodb使用$pull操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文