2017-06-19 93 views
0

我有一个小问题。直到现在,我还没有深入Mongo数据库的东西。更像SQL的人,但现在我必须创建一个Map Reduce查询。在MongoDB中创建MapReduce查询

我的数据是这样的:

enter image description here

每个学生都有多个讲座。现在我想要一个所有讲座的清单(没有重复)和访问它的学生人数。

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


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

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

一些提示会很棒。

+0

请更新用异样的输出就是你的问题。 – SandPiper

回答

0

我不知道这是否是你期待的数据,但不妨一试:

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

不是真的,但感谢您的帮助。如果你还没有找到答案,我会继续尝试 – Henne

+0

,也许你可以发布你的预期数据,看看其他人是否可以帮助你? –

0

我发现了一个aulution通过自己:

地图:

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

减少:

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