1

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

{
    '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 的那些,以发送更少的数据(我们正在谈论一万条记录,所以互联网上有很多数据)

谢谢

4

1 回答 1

1

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

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

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

MongoDB 聚合框架

于 2013-10-12T01:36:20.097 回答