Как запросить диапазон дат в коллекции MongoDB, где дата ISO хранится в строковом поле?
сценарий: считайте, что у меня есть коллекция под названием MyCollection
, со следующими данными:
{
"_id" : 'MyUniqueID_01'
"CreatedTime" : "2013-12-01T14:35:00Z",
"LastModifiedTime" : "2013-12-01T13:25:00Z"
}
теперь я хочу запросить базу данных MongoDB, где вышеупомянутые данные находятся в огромном количестве документов. И мой запрос основан на диапазоне дат, т. е. с помощью $gt
, $gte
, $lt
& $lte
поэтому мой запрос может быть чем-то вроде:
db.MyCollection.find({ 'CreatedTime': {$gt: '2013-05-25T09:29:40.572Z'}})
учитывая приведенные выше примеры ожидаемый результат, запрос, чтобы получить документ (так как "CreatedTime": "2013-12-01T14:35:00Z" больше, чем значение, переданное в запросе '2013-05-25T09:29: 40.572 Z'); в то время как это не так, проблема в том, что поле CreatedTime
в строке формата.
вопрос: есть ли способ, чтобы я мог получить ожидаемый результат без изменения типа поля строки на сегодняшний день?
1 ответов
вы можете сделать запросы, точно так же, как в Примере.
порядок строк согласован и даст вам точное отношение, которое вы хотите.