如何选择频率(发生)>数据库中的1条记录

问题描述:

我想选择频率> 1记录。如何选择频率(发生)>数据库中的1条记录

看看下面的数据,例如,

应该给我的结果一样,[{id: 146}]

因为只有ID 146出现一次以上。

何wcould我在MongoDB中做到这一点,得益于

{ 
    id: 146, 
    name: Mary 
} 

{ 
    id: 148, 
    name: Jack 
} 

{ 
    id: 146, 
    name: Mary 
} 
+0

您是否想要获取嵌入文档__(只有id字段)的_array名称? – 2015-04-06 08:23:11

+0

可能的重复[在关键字段中查找MongoDB集合中的所有重复文档](http://*.com/questions/9491920/find-all-duplicate-documents-in-a-mongodb-collection-by-a关键字段) – Yogesh 2015-04-06 11:17:46

你应该正确你想要什么解释。你也应该正确提供样本数据。

MongoId是一个独特的领域,不能重复,但你可以找到基于任何其他键的多个文件。根据您的示例数据,您可以编写如下查询 -

db.collection.aggregate([{$group: 
{"_id":{"id":"$id","name":"$name"}, 
uniqueIds: { $addToSet: "$_id" }, //u can comment out this line if not required 
count: { $sum: 1 } 
}}, 
{ $match: { 
count: { $gt: 1 } 
}}]) 

这将返回count(id)大于1的所有文档。

+0

嗨我更新了我的问题,我想选择频率> 1条记录 – user3675188 2015-04-06 09:04:25

+0

@ user3675188更新了我的答案。你在找吗?如果您不需要,您可以删除uniqueIds字段。您也可以将数据分组在其他键上。 – Vishwas 2015-04-06 10:25:26

+0

非常感谢。 – user3675188 2015-04-06 14:18:46