mongodb,选择字段在集合中至少出现N次的记录

mongodb,选择字段在集合中至少出现N次的记录,mongodb,optimization,mapreduce,Mongodb,Optimization,Mapreduce,我收集了这种格式的数据(实际上要大得多,但这是我们感兴趣的部分): 以id作为键,user.id可以在集合中重复 我正在尝试提取数据库中出现超过20次的所有user.id 我是mongo的新手,我对javascript不太在行,我尝试了很多东西,但都没有结果,我想我应该使用MapReduce,但是javascript部分我很失败 我不能简单地在客户端上搜索它,因为mongod实例是通过网络的,所以我应该尽量减少发送的数据 比如说: db.data.find({}, {'user.id':1, _

我收集了这种格式的数据(实际上要大得多,但这是我们感兴趣的部分):

以id作为键,user.id可以在集合中重复

我正在尝试提取数据库中出现超过20次的所有user.id

我是mongo的新手,我对javascript不太在行,我尝试了很多东西,但都没有结果,我想我应该使用MapReduce,但是javascript部分我很失败

我不能简单地在客户端上搜索它,因为mongod实例是通过网络的,所以我应该尽量减少发送的数据

比如说:

db.data.find({}, {'user.id':1, _id: 0})
我找到了所有的user.id,但我仍然想过滤掉那些重复次数少于20次的,以发送更少的数据(我们谈论的是上万条记录,因此互联网上有大量数据)


谢谢

如果您使用的是MongoDB v2.2+,我建议您使用新的聚合框架

下面是提取
user.id
在集合中出现20次以上的命令

db.data.aggregate([{$group: {_id: '$user.id', hits: {$sum: 1}}}, {$match: {hits: {$gt: 20}}}])

如果您使用的是MongoDB v2.2+版,我建议您使用新的聚合框架

下面是提取
user.id
在集合中出现20次以上的命令

db.data.aggregate([{$group: {_id: '$user.id', hits: {$sum: 1}}}, {$match: {hits: {$gt: 20}}}])