Как я могу фильтровать, используя текущие данные в mongodb - PullRequest
1 голос
/ 26 апреля 2019

Я хочу отфильтровать результаты по текущей дате, но они не работают

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" }
    }
  }
])

У меня есть билеты в моей БД, и я хочу найти билеты на текущий день.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

$currentDate - это оператор обновления, а не оператор конвейера агрегации, поэтому вместо него необходимо получить текущую дату на стороне клиента.

Вместо:

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

использование:

day: (new Date()).getDate()
0 голосов
/ 26 апреля 2019

Ваш первый запрос просто нуждается в небольшом изменении:

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

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

Второй запрос правильный, убедитесь, что есть документы, которые действительно соответствуют запросу, и что оба поля сохранены как объект Date, а не как строка.

...