使用聚合总和不同的领域我有一个test
收集文档模式是这样的:MongoDB中
{
"_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, ... }
,另一个文档为:{ "a" : 5, ... }
,另外3个文档为:{ "a" : 7, ... }
。
有什么办法可以将这些字段在“a”级组合在一起吗?我的方法完全错误吗?
工程就像一个魅力!也非常感谢架构重构建议,我没有想到它!现在它是有道理的... –