Как запросить диапазон дат в коллекции 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 ответов


вы можете сделать запросы, точно так же, как в Примере.

порядок строк согласован и даст вам точное отношение, которое вы хотите.