2016-12-15 33 views
0

感谢您提前给予帮助。确定元素在mapreduce之前出现在mongodb集合中的次数

我有一个MongoDB的集合

{ 

id: 12345, 
userid: 9876, 
CompName: PC-537, 
LogonTime: 2015-07-1, 
SessionName: Session1 
} 

什么,我试图做的是MapReduce的数据库瘫痪,在那里我可以看到有多少会话分配给每个补偿的名字,所以代替补偿以下名称多次出现在集合中,它会出现一次,与它关联的会话显示为值

有人可以给我一些指示吗?我知道如何在使用数字(例如降雨量:9毫米)时减少地图的数量(如降雨量:9毫米),但是当它的文本我怎么能找到减少的时候,PC只会出现一次,并且要么列出他们所有的会话和总数他们有的会议。

我至今尝试过如下

var mapFunc = function() { 
         emit(this.CompName, this.SessionName); 
        }; 

var reduceFunc = function(keyComp, keySession) { 
          return Array.sum(keySession); 
         }; 


db.compcollection.mapReduce(
        mapFunc, 
        reduceFunc, 
        { out: "comp2" } 
        ) 

这给我的数据库还原到会话名称不是COMPNAME的结果,也没有给出一个数字计数。所以基本上它给了我一个SESSIONNAME,而不是相反相关联的所有机器(这是我想要什么)

能有人请帮助:)

回答

0

如果有人需要这个将来我已经想通了这一点,见下面的代码

var mapper = function() { 
emit(this.CompName, 1); 
}; 

var reducer = function(compname, counter) { 
return Array.sum(count); 
}; 


db.compcollection.mapReduce(mapper, reducer, { out: "comp15" } 

)