我在集合中存储的文档格式为:
{ “一种”: { ... “乙”:{ “c”:抄送, “d”:dd, “e”:诶, “f”:ff } } }
我想从集合中count(c)> 1的所有文档中获取字段“d”和“e”。
如何有效地做到这一点?
我在集合中存储的文档格式为:
{ “一种”: { ... “乙”:{ “c”:抄送, “d”:dd, “e”:诶, “f”:ff } } }
我想从集合中count(c)> 1的所有文档中获取字段“d”和“e”。
如何有效地做到这一点?
得出问题的 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"}})
非常适合这个目的:)