我正在尝试使用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轻松完成,但数据集很大且性能不可接受。
有没有办法有效地使用聚合来完成这类任务?