简单的$ match大于$ gt不起作用

时间:2019-10-21 06:09:34

标签: mongodb

这是汇总查询的结果,

{
    "_id" : ObjectId("5dab3240dfbe9a15cd69771d"),
    "isManual" : false,
    "frequency" : 60,
    "lastExecuted" : ISODate("2019-10-21T03:38:15.114Z"),
    "lastExecutedTimeFromNow" : 129.58105
}
{
    "_id" : ObjectId("5dad47c65310a16581cc6294"),
    "isManual" : false,
    "frequency" : 50,
    "lastExecuted" : ISODate("2019-10-25T00:00:00.000Z"),
    "lastExecutedTimeFromNow" : 100
}
{
    "_id" : ObjectId("5dad48a55310a16581cc6332"),
    "isManual" : true,
    "frequency" : 100,
    "lastExecuted" : ISODate("2019-10-23T00:00:00.000Z"),
    "lastExecutedTimeFromNow" : 50
}

我想过滤lastExecutedTimeFromNow字段大于frequency的文档。但它返回0个结果。

这是我正在使用的aggregate查询

db.getCollection('test').aggregate([
    {
        $match: {
            "lastExecutedTimeFromNow": { $gte: "$frequency" }
        }
    }
])

关于我要去哪里的任何线索,或者对此的任何帮助都将非常有用。

1 个答案:

答案 0 :(得分:2)

您可以使用$ expr,但请注意,它比正常的$ match慢

db.getCollection('test').aggregate([
  {
    $match: {
      $expr: {
        $gte: [
          "$lastExecutedTimeFromNow",
          "$frequency"
        ]
      }
    }
  }
])