mongo聚合查询(多个组)

时间:2018-01-19 06:47:24

标签: mongodb-query

我有这样的数据

[
    {
        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

1 个答案:

答案 0 :(得分:1)

您可以使用以下查询。

db.collection.aggregate([
    {$unwind:"$slaves"},
    {$sort:{"ts": 1}},
    {$group:{_id:"$slave_id", lastele:{$last:"$data.a"}}},
    {$group:{_id:null, sum:{$sum:"$lastele"}}},
])