【发布时间】:2017-04-26 20:51:57
【问题描述】:
我在 test 集合中有一个文档架构,如下所示:
{
"_id" : NumberLong("A unique number"),
"text" : {
"characters_map" : {
"a" : 4,
"f" : 3,
"b" : 6,
...
"o" : 3
}
...
}
...
}
我想计算整个集合中每个字符的总和。我尝试使用aggregation framework,但似乎我做得不对。
我开始分别计算每个字符(即“a”),但没有运气。我最好的方法是:
> db.test.aggregate([
{ "$group" : {
_id : { a_count : "$text.characters_map.a" },
counter : { "$sum" : "$text.characters_map.a" }
}
}
])
a_count代表id的名字。
结果:
{ "_id" : { "a_map" : 8 }, "counter" : 8 }
{ "_id" : { "a_map" : 5 }, "counter" : 5 }
{ "_id" : { "a_map" : 7 }, "counter" : 21 }
...
不完全是假的,但不是我想要的。这些结果意味着我有 1 个文档的字段为:{ "a" : 8, ... },另外 1 个文档的字段为:{ "a" : 5, ... },3 个文档的字段为:{ "a" : 7, ... }。
有没有办法在“a”级别将这些字段组合在一起?我的方法完全错误吗?
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework