仅当查询中的条件匹配时才返回记录。 MongoDB

时间:2020-09-21 11:44:30

标签: database mongodb aggregation

下面是我的查询

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

已生成-是保存ISO日期值的列( ISODate(“ 2001-04-11T22:12:01.249Z”)

在这里,我想通过减去当前日期来查找小时数。我还想添加一个过滤器,如果 timeSpend 大于14小时,则仅应返回那些记录。

我不想返回其timeSpend值小于14小时的整个记录​​

1 个答案:

答案 0 :(得分:1)

您可以添加一个$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