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



我有一个包含这种格式数据的集合(实际上要大得多,但这是我们感兴趣的部分(:

{
    'id': 123214546565,
    'user': {
        id: 2222222
        }
}

使用 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+,我建议使用新的聚合框架。

这是提取在集合上出现超过 20 次user.id的命令。

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

MongoDB 聚合框架

相关内容

  • 没有找到相关文章

最新更新