我有一个包含这种格式数据的集合(实际上要大得多,但这是我们感兴趣的部分):
{
'id': 123214546565,
'user': {
id: 2222222
}
}
将id作为键,user.id可以在集合中重复。
我想把db中出现的所有user.id提取20次以上。
我是mongo的新手,我对javascript并不好,我尝试了各种各样的东西,没有结果,我想我应该使用MapReduce,但我很难用javascript部分。
我不能简单地在客户端上搜索它,因为mongod实例在网络上,所以我应该最小化我发送的数据。
有这样的事情:
db.data.find({}, {'user.id':1, _id: 0})
我找到了所有的user.id,但是我仍然希望过滤掉之前重复次数少于20次的那些,以发送更少的数据(我们正在谈论成千上万的记录,所以这是大量的数据互联网)
感谢
答案 0 :(得分:1)
如果您使用的是MongoDB v2.2 +,我建议使用新的聚合框架。
以下是提取user.id
在集合上出现超过20次的命令。
db.data.aggregate([{$group: {_id: '$user.id', hits: {$sum: 1}}}, {$match: {hits: {$gt: 20}}}])