【问题标题】:Mongo subtract in group aggregation组聚合中的 Mongo 减法
【发布时间】:2020-05-07 18:47:29
【问题描述】:

我有一个 mongo 查询,我需要分组,然后从最大值中减去最小值,但我在这样做时遇到了问题。

这是我的查询:

{
    $group : {
        _id :  {
            type: "$type",
            id : "$id"
            },
        sent : {$subtract: [{$max : "$value"}, {$min : "$value"}]}
    }
}

但我收到此错误消息:

$subtract 累加​​器是一元运算符

我想知道如何在小组赛中做减法。

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:

    你能试试下面的查询吗:

    db.[collection].aggregate([   
    {
            $group : {
                _id :  {
                    type: "$type",
                    id : "$id"
                    }, 
                maxValue : {$max : "$value"} , 
                minValue : {$min : "$value"}
            }
        },
        {
            $group : {
                _id :  {
                    type: "$_id.type",
                    id : "$_id.id"
                    }, 
                sent : {$subtract: [ "$maxValue", "$minValue" ]}
            }
        }
     ]) 
    

    【讨论】:

    • 有没有办法将其作为一个单独的组操作(与问题的样式相同),还是需要单独的阶段?
    • @streetster,单组操作的问题解决了吗?
    • @MdAlamin,不用担心,我只是做了 2 次操作 :(
    【解决方案2】:

    与 Yathish Manjunath 的回答类似的另一种选择是使用 $addFields 运算符:

    db.[collection].aggregate([   
        {
            $group : {
                _id :  {
                    type: "$type",
                    id : "$id"
                }, 
                maxValue : {$max : "$value"} , 
                minValue : {$min : "$value"}
            }
        },
        {
            $addFields : {
                sent : {$subtract: [ "$maxValue", "$minValue" ]}
            }
        }
    ]) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多