$匹配两个字段的总和

时间:2016-10-11 12:53:51

标签: mongodb mongodb-query aggregation-framework mongodb-aggregation

在mongodb聚合管道中,如何匹配两个非零的字段之和?所以我可以说以下内容给我所有startPos大于10的文件

db.strategy.aggregate(
    [
        {
            $match: {
             "startPos": {"$gt" :10}
            }
        },

    ]
);

但我怎么说:

db.strategy.aggregate(
    [
        {
            $match: {
             {"$subtract":["endPos","startPos"]}: {"$gt" :10} <== Clearly not legal
            }
        },

    ]
);

1 个答案:

答案 0 :(得分:1)

您可以使用redact来实现此目标。

db.strategy.aggregate([
                {"$redact" : 
                    { "$cond" : { 
                        if : { $gt: [ {"$subtract":["$endPos","$startPos"] }, 10] }, 
                        then: "$$KEEP", 
                        else: "$$PRUNE" 
                        } 
                    }         
                }
            ] );