如何将mongodb聚合返回为对象而不是数组

时间:2019-06-04 16:48:56

标签: mongodb

我对“ groupby”有一个简单的mongodb查询:

db.stories.aggregate(
[
    {
        $group: {
            _id: "$epic",
            sum: {$sum: "$sp"}
        }
    }
]

);

输出显然是一个看起来像这样的数组:

[{_id: "abc", sum: 123}, {_id: "xyz", sum: 356}]

我正在寻找的是将其作为对象而不是数组返回。我知道这里有$ map和$ arrayToObject,但不确定在哪里插入。

所需的结果是:

{
"abc": 123,
"xyz": 356}

我从这里尝试了建议的答案: proposed answer

我尝试过:

db.stories.aggregate(
[
    {
        $group: {
            _id: "$epic",
            sum: {$sum: "$sp"}
        }
    },

    {
       $project: {
            epics : { "$arrayToObject": {
                        "$map": {
                            "input": "$epics",
                            "as": "el",
                            "in": {
                                "k": "$$el._id",
                                "v": "$$el.sum"
                            }
                        }
                    } 
            }
         }
     }
]

);

仍然不起作用...

0 个答案:

没有答案