在MongoDB中,我需要使用组聚合(我相信),以便获得具有相同值的集合中的文档数量。我需要从最大到最小的时间将这些结果返回给我,然后获得每个结果的公共值。
例如
我有一个范围的正常查询(例如,字段“值”> 5)。我假设我应该在聚合
获取“id”字段具有相同值的所有文档,这些文档也与上述查询参数匹配
将大多数匹配值的结果排序为最小
为每个结果提供“id”的公共值。
示例文件:
#1. Type: "Like", value: 6, id: 123
#2. Type: "Like", value: 7, id: 123
#3. Type: "Like", value: 7, id: 123
#4. Type: "Like", value: 8, id: 12345
#5. Type: "Like", value: 7, id: 12345
#6. Type: "Like", value: 6, id: 1234
#7. Type: "Like", value: 2, id: 1234
#7. Type: "Like", value: 2, id: 1234
#7. Type: "Like", value: 2, id: 1234
预期输出(假设我有3个文档的限制,并且查询仅询问具有“值”字段> 5的文档:
1. id: 123
2. id: 12345
3. id: 1234
我期望这些顺序,因为id 123是最受欢迎的,而1234是最不受欢迎的,其中“value”字段> 5。
理想情况下,我会有一个方法可以按顺序返回结果ID的字符串[]。
答案 0 :(得分:1)
db.data.aggregate([
{$match: {value:{$gt:5}}},
{$group: {'_id':"$id", num:{$sum:1}, avg:{$avg:"$value"}}},
{$sort:{num:-1}}, { $limit : 50}
])