确定元素在mapreduce之前出现在mongodb集合中的次数

时间:2016-12-15 05:03:30

标签: node.js mongodb mongodb-query

感谢您的帮助。

我在mongodb集合中有以下内容

{

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

我想要做的是将数据库Mapreduce到我可以看到为每个comp名称分配了多少个会话,所以在集合中多次出现的comp名称,它会出现一次,与会话一起与它相关联显示为值

有人可以给我一些指示吗?我知道如何在使用数字时使用mapreduce(例如降雨量:9mm)并且计算结果,但是当它的文本我怎么能找到减少它以便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,也没有给出数字计数。所以基本上它给了我所有与会话名相关联的机器,而不是反向(这就是我想要的)

有人可以帮忙:)

1 个答案:

答案 0 :(得分:0)

如果将来有人需要这个,我已经想到了这一点,请参阅下面的代码

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

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


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

 )