【问题标题】:Return record only if the condition in the query matches | MongoDB仅当查询中的条件匹配时才返回记录 | MongoDB
【发布时间】:2021-01-07 12:12:12
【问题描述】:

以下是我的查询

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 小时,则只有那些记录应该返回。

我不想返回 timeSpend 值小于 14 小时的整条记录

【问题讨论】:

    标签: database mongodb aggregation


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2021-11-01
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多