1

コレクションに保存されているドキュメントの形式は次のとおりです。

    {
        "a": {
            ...

            "b": {
                "c": cc,
                "d": dd,
                "e": ええ、
                "f": ff
            }
        }

    }

count(c) > 1 のコレクション内のすべてのドキュメントからフィールド「d」と「e」を取得したいと考えています。

これを効率的に行うにはどうすればよいでしょうか。

4

1 に答える 1

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"}})

この目的に最適です:)

于 2012-11-16T16:34:18.293 に答える