我一直在尝试聚合一段时间了,但我似乎无法弄清楚如何找到字符串总和的平均值、最小值或最大值。
db.mycollectionname.aggregate([
{$unwind: "$Monitor"},
{$group: {_id: "$Monitor.Mon Type",
"Total": {$sum: 1}
}
}
])
我知道这并不多,但这就是我设法走多远,它抽出了这个;
{ "_id" : "RM", "Total" : 21 }
{ "_id" : "PT", "Total" : 43 }
{ "_id" : "IM", "Total" : 24 }
{ "_id" : "IO", "Total" : 72 }
我要做的是获取这些总和结果的最小值/最大值以及所有结果的平均值。 任何帮助或建议都值得赞赏,似乎找不到任何帮助我的东西。 谢谢
将此阶段添加为最后一个阶段:
{$group :{_id:'', minimum :{$min: '$Total'}, maximum :{$max: '$Total'}, Total :{$sum : '$Total'}, average :{$avg : '$Total'}}}
所以你的查询:
db.mycollectionname.aggregate([
{ $unwind: "$Monitor" },
{
$group: {
_id: "$Monitor.Mon Type",
"Total": { $sum: 1 }
}
},
{
$group: {
_id: '', minimum: { $min: '$Total' }, maximum: { $max: '$Total' },
Total: { $sum: '$Total' }, average: { $avg: '$Total' }
}
}
])
因此,当您执行_id: ''
或_id: null
时,小组赛阶段将遍历此时的所有文档。添加最终$group
阶段结果后应为:
/* 1 */
{
"_id" : "",
"minimum" : 21.0,
"maximum" : 72.0,
"Total" : 160.0,
"average" : 40.0
}