mongodb数组操作(删除)

  1. 1. 概述
  2. 2. 删除数组元素
    1. 2.1 $pull
    2. 2.2 $pop
  3. 3. 批量删除元素
    1. 2.1 $pull

mongodb对数组的操作,对整个文档来说是更新操作,对文档的数组字段有增删改查操作。

1. 概述

mongodb对数组的操作,对整个文档来说是更新操作,对文档的数组字段有增删改查操作。

2. 删除数组元素

2.1 $pull

$pull从数组中删除满足条件的元素

例如:

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "blue",
            "id" : 1
        }, 
        {
            "name" : "green",
            "id" : 2
        }, 
        {
            "name" : "red",
            "id" : 3
        }
    ]
}
  • 以下操作会删除元素
db.test.update(
  { },
  { $pull: { colors: { name: "blue" , id: 1 } } },
  { multi: true }
)

变更为

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "green",
            "id" : 2
        }, 
        {
            "name" : "red",
            "id" : 3
        }
    ]
}

2.2 $pop

{ $pop: { <field>: <-1 | 1>, ... } }

按照数组index删除元素

例如:

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "blue",
            "id" : 1
        }, 
        {
            "name" : "green",
            "id" : 2
        }, 
        {
            "name" : "red",
            "id" : 3
        }
    ]
}
  • 以下操作会删除第一个元素
db.test.update( { _id: 1 }, { $pop: { colors: -1 } } )

变更为

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "green",
            "id" : 2
        }, 
        {
            "name" : "red",
            "id" : 3
        }
    ]
}

3. 批量删除元素

2.1 $pull

$pull从数组中删除满足条件的元素

例如:

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "blue",
            "id" : 1
        }, 
        {
            "name" : "green",
            "id" : 2
        }, 
        {
            "name" : "red",
            "id" : 3
        }
    ]
}
  • 以下操作会删除元素
db.test.update(
  { },
  { $pull: { colors: {"$in": [{ name: "blue" , id: 1 }, {name: "green" , id: 2}]} } },
  { multi: true }
)

变更为

{
    "_id" : 1,
    "colors" : [ 
        {
            "name" : "red",
            "id" : 3
        }
    ]
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wind.kaisa@gmail.com

💰

×

Help us with donation