📅  最后修改于: 2023-12-03 15:32:56.247000             🧑  作者: Mango
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
聚合操作符。