2017-06-19 133 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); 
 
}