MongoDB Shell如何平均或$min/$max字符串的总和
我已经试着了解聚合有一段时间了,但我似乎不知道如何找到字符串总和的平均值,最小值或最大值MongoDB Shell如何平均或$min/$max字符串的总和,mongodb,nosql,aggregation-framework,nosql-aggregation,Mongodb,Nosql,Aggregation Framework,Nosql Aggregation,我已经试着了解聚合有一段时间了,但我似乎不知道如何找到字符串总和的平均值,最小值或最大值 db.mycollectionname.aggregate([ {$unwind: "$Monitor"}, {$group: {_id: "$Monitor.Mon Type", "Total": {$sum: 1} } } ]) 我知道这不算多,但这就是我成功走了多远,它把这一切都表现出来了 { "_id" : "RM", "To
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' }
}
}
])
因此,当您执行\u id:'
或\u id:null
时,组阶段将在该点迭代所有文档。添加最终$group
后,阶段结果应为:
/* 1 */
{
"_id" : "",
"minimum" : 21.0,
"maximum" : 72.0,
"Total" : 160.0,
"average" : 40.0
}
很抱歉再次打扰您,但是当我运行查询时,我收到错误消息,“字段“Total”必须是累加器对象”,我是否在查询中遗漏了任何内容,或者这是与我的数据相关的问题?我使用了您在回复上述查询时发布的解决方案。您能在这里给我您的查询`db.mycollectionname.aggregate([{$unwind:$Monitor”},{$group:{u id:{$Monitor.Mon Type”,“Total:{sum:1}},{$match:{$Total:{$Total”},{$group:{u id:{$min:{$Total},maximum:{$max:“$Total”},Total:{$sum:{$Total:{$Total:{$sum:$Total:$Total},avg:{$Total:{$Total}}}}])“两个$group在那里做的$match是什么?在第一组总计之后,将是一个数字,您正在使用总计=‘总计’筛选匹配阶段中的文档,这将不会为第二组阶段留下任何文档。对不起,我试图对其进行排序,以下是返回错误的查询;聚合([{$unwind:$Monitor”},{$group:{{$id:{$Monitor.Mon Type”,“Total:{$sum:1}}},{$group:{$id:{$Total:'',最小:{$min:$TOTALL},最大:{$max:$Total”},总计:{$sum:{$TOTALL:},平均:{$avg:{$TOTATALL}})