【问题标题】:MongoDB Shell How can I average or $min/$max a sum of stringsMongoDB Shell 我如何平均或 $min/$max 字符串的总和
【发布时间】:2020-01-07 22:41:55
【问题描述】:

一段时间以来,我一直在努力研究聚合,但我似乎无法弄清楚如何找到字符串总和的平均值、最小值或最大值。

    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 }

我要做的是获取这些总和结果的最小值/最大值以及所有结果的平均值。 任何帮助或建议表示赞赏,似乎找不到任何可以帮助我的东西。 谢谢

【问题讨论】:

    标签: mongodb nosql aggregation-framework nosql-aggregation


    【解决方案1】:

    将此阶段添加为最后阶段:

    {$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
    }
    

    【讨论】:

    • 很抱歉再次打扰您,但是当我运行查询时,我收到错误消息,“字段 'Total' 必须是一个累加器对象”,我是在查询中遗漏了什么还是它与我的数据有关的问题?我使用了您在回复中发布的解决方案作为所述查询。
    • 你能在这里给我你的查询
    • ` db.mycollectionname.aggregate([{$unwind: "$Monitor"}, {$group: {_id: "$Monitor.Mon Type", "Total": {sum: 1} }}, {$match: {Total:"Total"}}, {$group: {_id: '', 最小值: {$min: "$Total"}, 最大值: {$max: "$Total"},总计:{$sum:"$Total"},平均:{$avg:"$Total"}}}]) `
    • 两个 $groups 之间的 $match 是什么?在第一组 Total 将是一个数字之后,您将在匹配阶段过滤文档,Total = ‘Total’ 没有为第二组阶段留下任何文档
    • oop 对不起,我试图对其进行排序,这是返回错误的查询; db.Contracts.aggregate([{$unwind: "$Monitor"}, {$group: {_id: "$Monitor.Mon Type", "Total": {sum: 1}}}, {$group: {_id : '',最小值:{$min:"$Total"},最大值:{$max:"$Total"},总计:{$sum:"$Total"},平均值:{$avg:"$Total" }}}])
    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2015-09-28
    • 2020-11-22
    • 2019-02-21
    相关资源
    最近更新 更多