对于我的Rails + MongoId应用程序,为了统计目的,我需要汇总数据。 我的模型rapresenting是HAS_MANY版本的通用Web应用程序(又名:束)和相对的用户激活:关于深嵌套文档问题的MongoDB MapReduce问题
App = {
"_id" : ObjectId("4ff2e2eab528571384000eb4"),
"name" : "my app",
"category_id": "4ff2e2eab528571384000cc0",
"bundles": [{
"_id" : ObjectId("4ff2e2eab528571384000dca"),
"activations" : [{
"user" : "user_0",
"_id" : ObjectId("4ff2e2eab528571384000dd0")
},
...
},
...
]
}
现在,我要做的就是返回每个应用CATEGORY_ID激活数,ALA:
results = [
{
"_id": "4ff2e2eab528571384000cc0",
"value": 243
},
...
]
我可以很容易地获得每CATEGORY_ID束这个MapReduce的功能总数:
map = function() {
for (var bundle in this.bundles) {
emit(this.category_id, 1);
}
};
reduce = function(key, values) {
var sum = 0;
values.forEach(function(value) {
sum += value;
});
return sum;
};
但是,当我尝试进入更深层次,我根本没有得到任何结果:
map = function() {
for (var bundle in this.bundles) {
for (var activation in bundle.activations) {
emit(this.category_id, 1);
}
}
};
reduce = function(key, values) {
var sum = 0;
values.forEach(function(value) {
sum += value;
});
return sum;
};
任何想法是非常感谢。此致敬礼
迈克科斯塔