嗨,我是MongoDB的新手,我正在尝试获得以下具有document.collection.find
和$add
功能的MongoDB数据的总价和促销:
数据:
[
{
"catalog":"A",
"book":[
{
"title":"Mermaid yang terdampar",
"price":90000,
"promo":15000
},
{
"title":"Srigala berbulu domba",
"price":30000,
"promo":15000
}
}
]
我预期的结果是这样的:
[
{
"catalog": "A",
"totalPrice": 140000,
"totalPromo": 32000
},
]
有人遇到过类似的问题吗?我对这个问题感到困惑:(
对于.find()
查询,可以直接使用$sum
运算符。
db.collection.find({},
{
catalog: 1,
totalSum: {
$sum: "$book.price"
},
totalPromo: {
$sum: "$book.promo"
}
})
Mongo游乐场示例
使用聚合
db.getCollection('myCollection').aggregate([
{ "$group": {
"_id": "$tempId",
"totalPrice": {
"$sum": { "$sum": "$book.price" }
},
"totalPromo": {
"$sum": { "$sum": "$book.promo" }
}
} }
])
使用$group(聚合(
db.getCollection('catlog').aggregate([{
$group: {
_id: "$_id",
catalog: { $first: "$catalog" },
totalPrice: { "$sum": { $sum: "$book.price" } },
totalPromo: { "$sum": { $sum: "$book.promo" } }
}
}])
输出为:
{
"_id" : ObjectId("6247b33cffc5b6f714769fbb"),
"catalog" : "A",
"totalPrice" : 120000,
"totalPromo" : 30000
}