Mongodb 获取每个标记的所有对象

Mongodb 获取每个标记的所有对象,mongodb,mapreduce,mongodb-shell,Mongodb,Mapreduce,Mongodb Shell,我是mongodbs mapreduce的新手,当然我现在还没有完全理解它。我有一个问题,我试着解决了几天却没有成功 我收集了一组带有标签字段的帖子。现在我想映射一个新的标记集合。其中,每个标记都有一个包含分配了这一特定标记的所有POST ID的数组 我的一次尝试(做得不对) 我知道,我必须将日期围绕某个方向旋转,但我就是不能让我的头脑围绕它转。我想你在reduce函数中缺少了一个“)”来关闭emits[I].ids.forEach()。这就是你想做的吗 r = function (key, v

我是mongodbs mapreduce的新手,当然我现在还没有完全理解它。我有一个问题,我试着解决了几天却没有成功

我收集了一组带有标签字段的帖子。现在我想映射一个新的标记集合。其中,每个标记都有一个包含分配了这一特定标记的所有POST ID的数组

我的一次尝试(做得不对)

我知道,我必须将日期围绕某个方向旋转,但我就是不能让我的头脑围绕它转。

我想你在reduce函数中缺少了一个“)”来关闭emits[I].ids.forEach()。这就是你想做的吗

r = function (key, values) {
    var total = {ids:[]};
    for (var i in values) {
        values[i].ids.forEach(
            function (id){
                 total.ids.push(id);
            }
        );
    }
    return total;
}
输入

结果:

{"results" : [
        {"_id" : "Jenna",
         "value" : {"ids" : [2,1]}
        },
        {"_id" : "cat",
         "value" : {"ids" : [1]}
        },
        {"_id" : "dog",
         "value" : {"ids" : [2]}
        }
    ],
    "timeMillis" : 1,
    "counts" : {
        "input" : 2,
        "emit" : 4,
        "reduce" : 1,
        "output" : 3
    },
    "ok" : 1,
}

为了澄清您的问题,您能否发布一个示例输入文档以及map reduce的预期输出?
{_id:2, tags: ["dog", "Jenna"]}
{_id:1, tags: ["cat", "Jenna"]}
{"results" : [
        {"_id" : "Jenna",
         "value" : {"ids" : [2,1]}
        },
        {"_id" : "cat",
         "value" : {"ids" : [1]}
        },
        {"_id" : "dog",
         "value" : {"ids" : [2]}
        }
    ],
    "timeMillis" : 1,
    "counts" : {
        "input" : 2,
        "emit" : 4,
        "reduce" : 1,
        "output" : 3
    },
    "ok" : 1,
}