Return只有查询中的条件匹配才记录 | MongoDB

Return record only if the condition in the query matches | MongoDB

下面是我的查询

db.getCollection('ledgers').aggregate(
[              
    {
       "$project":{
                    "name":1,
                    "generated":1 
                    timeSpend:{
                                 $divide : 
                                 [{
                                    $subtract: 
                                     ["$generated",new Date()]
                                   }, 3600000
                                 ]
                               }
                   }
    }
])

generated -- 是保存 ISO 日期值的列 (ISODate("2001-04-11T22:12:01.249Z"))

在这里,我试图通过减去当前日期来计算小时数。我还想添加一个过滤器,如果 timeSpend 大于 14 小时,只有那些记录应该 return.

我不想 return timeSpend 值小于 14 小时的整个记录​​

您可以添加一个 $match 阶段来过滤结果 timeSpend > 14

如果您的日期是过去的日期,则 $subtract 应该反转。 timeSpend = new Date() - $generated

[
  {
    "$project": {
      "name": 1,
      "generated": 1,
      "timeSpend": {
        $divide: [
          {
            $subtract: [
              new Date(),
              "$generated"
            ]
          },
          3600000
        ]
      }
    }
  },
  {
    "$match": {
      timeSpend: {
        $gt: 14
      }
    }
  }
]

试一试here