MongoDb: Найти объекты только с фильтром даты
В mongodb у меня есть поле даты и времени, например "2018-01-26T16:40:19.305+05:00". Как я буду фильтровать только по сегодняшней дате? Я имею в виду без времени?
Мой документ:
{
"pk": NumberLong("6585118137"),
"created_time": ISODate("2018-01-26T16:40:19.305+05:00"),
}
Я хочу что-то вроде
select * from table where date(created_time) = "2018-01-26"
1 ответ
Решение
Мы можем сравнить дату $gte
new Date("2018-01-26")
а также $lt
new Date("2018-01-27")
db.col.find(
{$expr :
{ $and: [ { $gte : ["$created_time", new Date("2018-01-26")] }, { $lt : [ "$created_time", new Date("2018-01-27") ] } ] }
}
)
или отформатировать дату в %Y%m%d
(yyyyMMdd) и сравните со строкой даты для поиска
db.col.find(
{$expr :
{$eq :
[{$dateToString: {format: '%Y%m%d',date: "$created_time"}}, "20180126"]
}
}
)