0

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

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

    ] 
); 

但我怎么这样说:

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

    ] 
); 
+2

'$ redact'是正确的操作符。 – styvane

回答

1

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

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