📜  MongoDB $add 运算符(1)

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

MongoDB $add 运算符

MongoDB $add 运算符可以用于将表达式的结果与现有文档中的字段值相加。

语法
{ $add: [ <expression1>, <expression2>, ... ] }
  • $add: 要执行的聚合操作符。
  • expression: 可以是任何有效的 MongoDB 表达式。
示例

假设我们有一组文档,描述用户的购物车信息:

{
  "_id": ObjectId("5f5f037e5b5aac1537a01381"),
  "user": "johnsmith",
  "cart": [
    { "item": "apple", "quantity": 2, "price": 1.49 },
    { "item": "banana", "quantity": 3, "price": 0.99 },
    { "item": "orange", "quantity": 1, "price": 2.29 }
  ]
},
{
  "_id": ObjectId("5f5f03ca5b5aac1537a01382"),
  "user": "janedoe",
  "cart": [
    { "item": "apple", "quantity": 1, "price": 1.49 },
    { "item": "mango", "quantity": 2, "price": 2.99 },
    { "item": "watermelon", "quantity": 1, "price": 3.99 }
  ]
},
{
  "_id": ObjectId("5f5f03f75b5aac1537a01383"),
  "user": "bobsanders",
  "cart": [
    { "item": "banana", "quantity": 5, "price": 0.99 },
    { "item": "grapefruit", "quantity": 2, "price": 1.79 }
  ]
}

现在,我们想要计算每个用户购物车中所有商品的价值。我们可以使用 $add 运算符来完成此操作:

db.carts.aggregate([
  {
    $project: {
      user: 1,
      totalAmount: { $add: [ "$cart.price", "$cart.quantity" ] }
    }
  }
])

运行上述聚合管道后,我们得到以下输出:

{
  "_id": ObjectId("5f5f037e5b5aac1537a01381"),
  "user": "johnsmith",
  "totalAmount": [ 3.49, 3.99, 3.29 ]
},
{
  "_id": ObjectId("5f5f03ca5b5aac1537a01382"),
  "user": "janedoe",
  "totalAmount": [ 2.98, 6.97, 4.99 ]
},
{
  "_id": ObjectId("5f5f03f75b5aac1537a01383"),
  "user": "bobsanders",
  "totalAmount": [ 5.99, 3.58 ]
}

注意,$add 运算符将每个元素的结果作为数组返回,因为我们使用的是一个包含多个元素的数组作为输入。如果只需要单个结果,应该使用 $sum 聚合操作符。