mongodb数组操作(删除) - Mon, Aug 5, 2019
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
}
]
}