MongoDB-获取数组中一个对象的总和



嗨,我是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
}

最新更新