Mogno: поиск записи по дате, если дата в формате строки

Всем привет.

Так получилось, что у меня даты с Монго сохранены как строки. Но мне нужно по ним отфильтровать записи и найти те, которые попадают в интервал. Может кто-то сталкивался с таким. Я много читал, что можно фильтровать, если даты сохранены в типе Date, но так вышло, что у меня в строках.


Ответы (1 шт):

Автор решения: Maxim Sharai

Для данных вида:

{
  "_id" : ObjectId("613b6f94272a50ce7c777549"),
  "dateProperty" : "2021-09-06T12:36:41.555Z"
}

Запрос:

db.getCollection('Test').find({
  $expr: {
    $and: [
      {
        $gte: [
          {$dateFromString: {dateString: '$propertyName'}},
          ISODate('2021-01-01T00:00:00.000Z')
        ],
      },
      {
        $lte: [
          {$dateFromString: {dateString: '$propertyName'}},
          ISODate('2022-01-01T00:00:00.000Z')
        ],
      },
    ],
  },    

})

Если дата имеет другой формат, то у операции $dateFromString можно указать формат данных.


!!! Хочу также обратить внимание, что если дата в виде строки в формате ISO (как на примере), то можно просто сравнивать строки вместо дат. Результат будет тем же

→ Ссылка