首页 > 解决方案 > MongoDB-来自聚合结果的数组

问题描述

我有以下 MongoDB 查询:

db.my_collection.aggregate([
{
    $group: {"_id":"$day", count: { $sum: "$myValue" }
}}])

它返回以下结果:

{
    "_id" : ISODate("2020-02-10T00:00:00.000+01:00"),
    "count" : 10
},
{
    "_id" : ISODate("2020-02-01T00:00:00.000+01:00"),
    "count" : 2
}

是否可以从这个结果中创建两个数组,如下所示?

 {
    "days": [ISODate("2020-02-10T00:00:00.000+01:00"), ISODate("2020-02-01T00:00:00.000+01:00")],
    "values": [10, 2]
 }

标签: mongodb

解决方案


是的,只需添加另一个$group阶段:

db.my_collection.aggregate([
    {
        $group: {
            "_id": "$day", count: {$sum: "$myValue"}
        }
    },
    {
        $group: {
            "_id": null,
            days: {$push: "$_id"},
            values: {$push: "$count"}
        }
    }
])

推荐阅读