1

我在集合中存储的文档格式为:

    {
        “一种”: {
            ...

            “乙”:{
                “c”:抄送,
                “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 回答