📜  MongoDB – $pull 运算符(1)

📅  最后修改于: 2023-12-03 15:03:01.497000             🧑  作者: Mango

MongoDB – $pull 运算符

在MongoDB中,$pull运算符用于从数组中删除所有符合某个条件的元素。

语法

$pull运算符的语法如下:

{ $pull: { <array>: <value>|<condition> } }

其中,$pull运算符是一个对象,其值是一个数组,需要更新的数组字段为,需删除的元素匹配的条件可以是一个特定的值,或者一个匹配条件

示例

假设我们有一个集合favorite_fruits,其中包含一个名为fruits的数组字段,其中存储了所有喜爱的水果。我们需要删除数组中所有的橙子。

原始数据
{
  "_id": ObjectId("615b6dcbfe69fa36e12e181f"),
  "name": "John Doe",
  "fruits": ["apple", "orange", "banana", "orange"]
}
使用$pull删除橙子
db.favorite_fruits.update(
   { "name": "John Doe" },
   { "$pull": { "fruits": "orange" } }
)
更新后的数据
{
  "_id": ObjectId("615b6dcbfe69fa36e12e181f"),
  "name": "John Doe",
  "fruits": ["apple", "banana"]
}
$pull和条件表达式

$pull运算符也可以和条件表达式一起使用,以删除数组中满足条件的元素。

原始数据
{
  "_id": ObjectId("615b6dcbfe69fa36e12e181f"),
  "name": "John Doe",
  "fruits": [
    {"name": "apple", "amount": 10},
    {"name": "orange", "amount": 5},
    {"name": "banana", "amount": 7},
    {"name": "orange", "amount": 3}
  ]
}
使用$pull和条件表达式删除某个水果
db.favorite_fruits.update(
   { "name": "John Doe" },
   { "$pull": { "fruits": { "name": "orange" } } }
)
更新后的数据
{
  "_id": ObjectId("615b6dcbfe69fa36e12e181f"),
  "name": "John Doe",
  "fruits": [
    {"name": "apple", "amount": 10},
    {"name": "banana", "amount": 7}
  ]
}

在上面的例子中,我们使用$pull和条件表达式一起删除了数组中所有名为“orange”的元素。注意,$pull删除的对象是元素本身,而非数组索引。

总结

$pull运算符是MongoDB的一个有用的操作符,用于从数组中删除符合特定条件的元素。它可以与条件表达式一起使用,使操作更为灵活。