在MongoDB中创建MapReduce查询

时间:2017-06-19 19:59:17

标签: javascript mongodb mapreduce

我有一个小问题。到现在为止,我对Mongo DB的东西并不是那么深。更像是SQL人,但现在我必须创建一个Map Reduce查询。

我的数据如下:

enter image description here

每个学生都有多个讲座。现在我想要一份所有讲座的清单(没有重复)以及参观的学生人数。

function() {
emit(this.vorlesungen, this._id);
};


function(VL, students) {
                      return Array.sum(students);
                  };

这给了我一些我无法弄清楚的奇怪结果。

一些提示会很棒。

2 个答案:

答案 0 :(得分:0)

我不确定这是您期望的数据,但是试一试:

db.collection.aggregate([
   {$unwind : "$vorlesungen"},
   {$group : {_id : "$vorlesungen", studentCount: {$sum : 1}}}
])

答案 1 :(得分:0)

我自己发现了一个问题:

地图:

function() {
this.vorlesungen.forEach(function (elem) {
for(vlname in elem) {
emit(vlname, 1);
}
});

减少

function(key, values) {
return Array.sum(values);
}