MongoDB $pullAll 运算符介绍
Mongodb 中的 $pullAll
运算符用于从数组中删除所有与指定值匹配的元素。与 $pull
运算符类似,但 $pull
仅删除一个匹配项,而 $pullAll
可以删除多个匹配项。
语法
$pullAll
运算符的语法如下:
{ $pullAll: { <field1>: [ <value1>, <value2>, ... ], ... } }
其中,<field>
是需要进行操作的数组字段名,<value>
是需要从该数组中删除的值。可以在同一操作中使用多个字段。
使用场景
$pullAll
运算符适用于需要删除数组中多个匹配项的情况。例如,一个文档包含一个用户的朋友列表,用户希望从列表中删除多个朋友。使用 $pullAll
运算符可以轻松地删除所有指定的朋友。
示例
假设有一个名为 users
的集合,其中包含以下文档:
{
_id: 1,
friends: ['Alice', 'Bob', 'Charlie', 'David', 'Emily']
}
现在用户决定删除 Bob
、David
和 Emily
这三个朋友,可以使用以下命令:
db.users.update(
{ _id: 1 },
{ $pullAll: { friends: ["Bob", "David", "Emily"] } }
)
执行上述命令后,friends
数组中的值将变为 ['Alice', 'Charlie']
。因为 $pullAll
运算符可以一次性删除多个匹配项,所以非常适合这种情况。
接下来,假设我们有一个名为 students
的集合,其中包含以下文档:
{
_id: 1,
grades: [
{ grade: 'A', score: 95 },
{ grade: 'B', score: 80 },
{ grade: 'C', score: 70 },
{ grade: 'A', score: 90 }
]
}
现在,我们想要从 grades
数组中删除所有分数低于 80 分的文档。可以使用以下命令:
db.students.update(
{ _id: 1 },
{
$pullAll: {
grades: [
{ grade: "B", score: 80 },
{ grade: "C", score: 70 }
]
}
}
)
执行上述命令后,grades
数组中的值将变为:
{ grade: 'A', score: 95 }
{ grade: 'A', score: 90 }
结论
$pullAll
运算符可以方便地从数组中删除多个匹配项,适用于需要删除多个值的情况。