コレクションに保存されているドキュメントの形式は次のとおりです。
{ "a": { ... "b": { "c": cc, "d": dd, "e": ええ、 "f": ff } } }
count(c) > 1 のコレクション内のすべてのドキュメントからフィールド「d」と「e」を取得したいと考えています。
これを効率的に行うにはどうすればよいでしょうか。
コレクションに保存されているドキュメントの形式は次のとおりです。
{ "a": { ... "b": { "c": cc, "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"}})
この目的に最適です:)