【发布时间】:2021-05-30 08:25:24
【问题描述】:
我有一个名为 UserRecords 的 MongoDb 集合。它存储我们用户的所有记录,每个用户可以有许多记录。
我正在尝试计算一些与每个用户的记录数相关的基本统计数据。
具体来说,我想要每个用户的记录数的平均值、中位数和众数。
到目前为止,我有一个查询,它按 User_Id (uid) 对所有 UserRecords 进行分组,并计算每个用户的 UserRecords 数量。
db.UserRecords.aggregate([
{$group:
{_id:{"uid":"$uid"},
count:{$sum:1}}}
])
我的查询产生如下所示的结果:
{
"_id" : {
"uid" : UUID("f22880a8-94d2-4524-a974-a2e500e2c2a2")
},
"count" : 100
}
{
"_id" : {
"uid" : UUID("1b3a3b81-d107-4345-8df5-a5ef00e23598")
},
"count" : 200
}
我需要我的查询来计算所有“计数”值的平均值。例如,假设上述结果是仅产生的 2 组。我需要我的查询来执行 (100 + 200) / 2 = 150 并将 150 的值打印到控制台。
有谁知道我可以在查询中添加什么来完成此操作?
*编辑,我希望我的结果结构是:
{
"mean": 1000,
"median": 850
"mode": 900
}
【问题讨论】:
-
你应该能够链接另一个聚合管道阶段做一个组 + $avg。
-
请提供预期的结果结构。
-
@turivishal 完成,谢谢
-
这个平均值会去哪里?下面
mode?
标签: mongodb mongodb-query aggregation-framework