我有这样的数据
[
{
slave_id:1,
data:{
a:1
},
ts:2018-01-19T06:39:20.000Z
},
{
slave_id:1,
data:{
a:2
},
ts:2018-01-19T06:39:21.000Z
},
{
slave_id:2,
data:{
a:3
},
ts:2018-01-19T06:39:22.000Z
},
{
slave_id:2,
data:{
a:4
},
ts:2018-01-19T06:39:23.000Z
}
]
我想要一个汇总查询,它给出了" a"的总和。为每个" slave_id"
的最后一条记录结果应该是
2(last value form slave_id=1)+4(last value form slave_id=2) =6
答案 0 :(得分:1)
您可以使用以下查询。
db.collection.aggregate([
{$unwind:"$slaves"},
{$sort:{"ts": 1}},
{$group:{_id:"$slave_id", lastele:{$last:"$data.a"}}},
{$group:{_id:null, sum:{$sum:"$lastele"}}},
])