Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB Shell如何平均或$min/$max字符串的总和_Mongodb_Nosql_Aggregation Framework_Nosql Aggregation - Fatal编程技术网

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}})