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 (как на примере), то можно просто сравнивать строки вместо дат. Результат будет тем же