这似乎是一个简单的问题,但我似乎无法弄清楚,在尝试了大量的时间。
我有一个mongodb集合,它有模式{user, documentID, rating}。收视率为1-5级,因此该集合可能如下所示:
userA, documentA, 5
userA, documentB, 5
userB, documentA, 1
userC, documentB, 2
(and so on...)有没有一种方法可以直接找到的计数,每个分级在上,一个文档,有一个查询?所需的输出类似于:
documentA:{
"1": 23,
"2": 24,
"3": 131,
"4": 242,
"5": 500
}我已经了解了如何使用aggregate对字段进行分组,但我不确定如何使用它返回distinct值的计数(即1-5)。
将非常感谢任何提供的帮助!
发布于 2017-03-24 07:55:50
您可以使用聚合来实现这一点。
查询看起来就像
db.collection.aggregate([
{ $group:
{ _id: { document: "$document", rating: "$rating"},
sum: {$sum: 1}
}
}
])输出就像
{_id: {"document": "documentA", "rating": 1}, "sum": 1}
{_id: {"document": "documentA", "rating": 5}, "sum": 1}
{_id: {"document": "documentB", "rating": 2}, "sum": 1}
{_id: {"document": "documentB", "rating": 5}, "sum": 1}https://stackoverflow.com/questions/42993290
复制相似问题