我正在尝试计算总值,如果该值存在的话。但是查询并没有完全成功。所以有人能帮助我解决这个问题吗?这是我的样本文件。我已经附上了两个文档,请查看这些文档并找出最佳解决方案。 文档:1
{
"_id" : 1"),
"message_count" : 4,
"messages" : {
"data" : [
{
"id" : "11",
"saleValue": 1000
},
{
"id" : "112",
"saleValue": 1400
},
{
"id" : "22",
},
{
"id" : "234",
"saleValue": 111
}
],
},
"createdTime" : ISODate("2018-03-18T10:18:48.000Z")
}
文档:2
{
"_id" : 444,
"message_count" : 4,
"messages" : {
"data" : [
{
"id" : "444",
"saleValue" : 2060
},
{
"id" : "444",
},
{
"id" : 234,
"saleValue" : 260
},
{
"id" : "34534",
}
]
},
"createdTime" : ISODate("2018-03-18T03:11:50.000Z")
}
需要的输出:
{
total : 4831
}
我的查询:
db.getCollection('myCollection').aggregate([
{
"$group": {
"_id": "$Id",
"totalValue": {
$sum: {
$sum: "$messages.data.saleValue"
}
}
}
}
])
如果可能的话,请帮忙解决这个问题。非常感谢。
unwind
函数对data
数组展开,并累加data.value
。 - Clement Amarnath