【问题标题】:How can I filter using current data in mongodb如何在 mongodb 中使用当前数据进行过滤
【发布时间】:2019-04-26 10:00:18
【问题描述】:

我想用当前日期过滤我的结果,但它不起作用

1-

db.tickets.aggregate([
  {
    $project:{
      month:{
        $month:"$ticket.headerEntity.businessDate"},
        day:{
        $dayOfMonth:"$ticket.headerEntity.businessDate"},
        year:{ $year:"$ticket.headerEntity.businessDate"},
        day1:{ $dayOfMonth:"$currentDate" }
      }
    },
    { $match:{ month:4, day:day1 }
  }
])

2-

db.tickets.aggregate([
  {
    $project:{
      month:{
        $month:"$ticket.headerEntity.businessDate"
      },
      day:{ $dayOfMonth:"$ticket.headerEntity.businessDate" },
      year:{ $year:"$ticket.headerEntity.businessDate" }
    }
  },
  { 
    $match:{ 
      month:4, 
      day:{ "$dayOfMonth":"$currentDate" }
    }
  }
])

我的数据库中有一张票,我想找到 currentDate 票。

【问题讨论】:

  • 请提供您的文件的详细信息,至少一份样本文件。

标签: mongodb mongodb-query aggregate


【解决方案1】:

您的第一个查询只需稍作改动:

{ $match:{ month:4, day:day1 } change this into:

{ $match:{ month:4, day:"$day1" }

第二个查询是正确的,请确保有真正适合查询的文档,并且两个字段都保存为 Date 对象而不是字符串。

【讨论】:

    【解决方案2】:

    $currentDate 是更新运算符,而不是聚合管道运算符,因此您需要获取当前日期客户端。

    所以而不是:

    day: {"$dayOfMonth": "$currentDate"}
    

    使用:

    day: (new Date()).getDate()
    

    【讨论】:

      猜你喜欢
      • 2013-11-11
      • 2017-09-07
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多