$匹配两个字段的总和

$match on sum of two fields

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

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

    ]
);

但是我该怎么说:

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

    ]
);

您可以使用 redact 来实现。

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