MongoDB:聚合嵌套对象属性

时间:2017-09-21 10:35:43

标签: mongodb aggregation-framework

我正在尝试使用MongoDB聚合聚合多个嵌套属性。

示例集合:

[{
    "_id" : ObjectId("59c0b704863b6c23edb9671e"),
    "client_id": "c1",
    "errors": {
        "500": 1,
        "404": 3
    }
},
{
    "_id" : ObjectId("68c0b704863b6c23edb9671e"),
    "client_id": "c1",
    "errors": {
        "404": 1,
        "403": 5,
        "401": 10
    }
}]

所需的聚合查询结果:

{
    "client_id": "c1",
    "errors": {
        "500": 1,
        "404": 4,
        "403": 5,
        "401": 10
    }
}

需要以这种方式聚合1M记录(或更多)。

errors密钥不是明确的或最终的,可以按需添加,在这种情况下聚合不应该失败。

我还考虑过使用带有$unwind的数组,但成本很高。

我可以使用map-reduce轻松完成,但数据集很大且性能不可接受。

有没有办法有效地使用聚合来完成这类任务?

0 个答案:

没有答案