Mongo在分组聚合中的减法

3

我有一个Mongo查询,需要进行分组,然后从最大值中减去最小值,但是我在执行时遇到了问题。

这是我的查询:

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

但我收到了这个错误信息:

$subtract累加器是一元运算符

我想知道如何在分组阶段进行减法操作。
2个回答

7

除了Yathish Manjunath的答案,另一种选择是使用$addFields操作符:

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

5

您可以尝试以下查询:

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

1
有没有办法将这个作为一个单独的组操作来完成(与问题的风格相同),还是它们需要分开进行? - undefined
@streetster,你解决了单组操作的问题吗? - undefined
@MdAlamin,抱歉,我只是将其分为两个操作来完成 :( - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接