如何在mongodb中使用当前数据进行过滤

时间:2019-04-26 10:00:19

标签: mongodb mongodb-query aggregate

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

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票。

2 个答案:

答案 0 :(得分:0)

您的第一个查询只需要一些更改:

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

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

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

答案 1 :(得分:0)

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

所以代替:

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

使用:

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