kaisawind's blog
  • 关于
  • 所有帖子

mongodb数组操作(删除) - Mon, Aug 5, 2019

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

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

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


辽ICP备2021007608号 | © 2025 | kaisawind

Facebook Twitter GitHub