获取每个标签的所有对象
问题描述:
我是mongodbs mapreduce的新手,当然我现在还没有完全理解它。我有一个问题,我试图解决几天而没有成功。获取每个标签的所有对象
我有一个让我们说标签字段的帖子的集合。现在我想映射一个新的标签集合。每个标签都有一个所有帖子id的数组,这些标签分配了一个特定的标签。
我试图做到这一点的一个(不这样做的权利)
m = function() {
for (var i in this.tags) {
emit(this.tags[i], {"ids" : [this._id]});
};
}
r = function(key, emits) {
var total = {ids : []}
for (var i in emits) {
emits[i].ids.forEach(function(id) {
total.ids.push(id);
}
}
return total;
};
我知道,我有一些如何围绕转动的日期,但我就是不能让我的头缠着它。
答
我想你在reduce函数中缺少一个“)”来关闭emits [i] .ids.forEach()。这是你想要做的吗?
r = function (key, values) {
var total = {ids:[]};
for (var i in values) {
values[i].ids.forEach(
function (id){
total.ids.push(id);
}
);
}
return total;
}
输入
{_id:2, tags: ["dog", "Jenna"]}
{_id:1, tags: ["cat", "Jenna"]}
结果:
{"results" : [
{"_id" : "Jenna",
"value" : {"ids" : [2,1]}
},
{"_id" : "cat",
"value" : {"ids" : [1]}
},
{"_id" : "dog",
"value" : {"ids" : [2]}
}
],
"timeMillis" : 1,
"counts" : {
"input" : 2,
"emit" : 4,
"reduce" : 1,
"output" : 3
},
"ok" : 1,
}
+0
非常感谢,它对我来说非常有效! – srge 2012-08-01 13:05:05
澄清你的问题,你可以发布样本输入文档以及地图的预期输出减少? – Jenna 2012-07-31 20:14:43