我在集合中存储的文档格式为:
{ "a": { ... "b": { "c": cc, "d": dd, "e": ee, "f": ff } } }
我想从集合中所有文件中得到字段“d”和“e”,其中count(c)> 1。
如何有效地完成这项工作?
答案 0 :(得分:0)
到达问题的map-reduce解决方案:
我的功能现在看起来像这样:
m = function() {
emit(this.a.b.c, { data: [[this.a.b.d, this.a.b.e]] });
}
r = function(key, values) {
var result = [];
values.forEach(function(V) {
Array.prototype.push.apply(result, V.data);
});
return {data: result};
}
db.coll.mapReduce(m, r, {out: {replace: "data"}})
非常适合这个目的:)