Mongodb聚合likert标度

Mongodb聚合likert标度,mongodb,Mongodb,这似乎是一个简单的问题,但在尝试了相当长的时间后,我似乎无法解决它 我有一个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,

这似乎是一个简单的问题,但在尝试了相当长的时间后,我似乎无法解决它

我有一个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
}
是否有一种方法可以通过一次查询直接找到单个文档中每个评级的计数?所需的输出类似于:

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
}
我已经读过如何使用
聚合
对字段进行分组,但我不确定如何使用它返回
不同
值的计数(即1-5)


非常感谢您提供的任何帮助

您可以使用聚合来实现这一点

这个查询看起来像

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}