mongodb - Mongodb聚合以使用groupby获取记录数
问题描述
我在下面收集了信号记录:
Signal records:
[
{
"id": "5dc250e0d972e71c3b3e6e88",
"signalStrength": -180,
"signalbars": "3",
"employee": "5db59227f0204855654075ee",
"store": "5dc25092d972e71c3b3e6e87",
"carrierName": "LT&T"
},
{
"id": "5dc251f723760a24de167f8e",
"signalStrength": -180,
"signalbars": "3",
"employee": "5db59227f0204855654075ee",
"store": "5dc25092d972e71c3b3e6e87",
"carrierName": "Sprint"
},
{
"id": "5dc289affd1ea02f0fceb9ac",
"signalStrength": -80,
"signalbars": "3",
"employee": "5db59227f0204855654075ee",
"store": "5dc2899bfd1ea02f0fceb9ab",
"carrierName": "LT&T"
}
]
基本上我需要计算基于运营商名称的平均值和拥有该运营商名称信号记录的员工总数
我需要得到以下结果
[
{
"_id": "LT&T",
"averageSignal": -130,
"strongestSignal": -80,
"weakestSignal": -180,
"averageBars": 3,
"totalTests": 2,
"totalTesters": 1
},
{
"_id": "Sprint",
"averageSignal": -180,
"strongestSignal": -180,
"weakestSignal": -180,
"averageBars": 3,
"totalTests": 1,
"totalTesters": 1
}
]
我的代码如下聚合:
[
{
$match: query
},
{
$group:
{
_id: "$carrierName",
averageSignal: { $avg: "$signalStrength" },
strongestSignal: { $max: "$signalStrength" },
weakestSignal: { $min: "$signalStrength" },
averageBars: { $avg: "$signalbars" },
totalTests: { $sum: 1 },
}
},
{ $sort: { carrierName: -1 } },
]
我卡住了如何在上述查询中找到总测试人员
任何帮助都会很棒
解决方案
推荐阅读
- python - 如何修复值错误:“CB7”不在列表中?
- arrays - 如何检查直线多边形是否相交
- typo3 - 有时不会生成排版链接
- javascript - 即使凭据设置为“包含”,Cookie 也不会随 Fetch API CORS 请求一起发送
- python - 如何将变量从 python 移动到模板并返回?
- python - 有没有办法使用 python-docx 将所有项目符号列表替换为 docx 文件中的编号列表?
- javascript - 在 Laravel Inertia Vue 中初始化服务器端多列排序
- javascript - 为每个索引处存在的值过滤 javascript 多维数组
- reactjs - 如何使用 WebStorm 在浏览器中打开反应项目?
- mysql - 为什么 SELECT in (IDENTIC: [version MySQL + SESSION.sql_mode + system_time_zone]) 在 CentOs 7 中返回 NULL 但在 W10 中返回 GOAL + WARNING?