2015-06-26 2 views
2

Я хочу получить все документы после определенной даты. Моя база данных имеет дату, - DateAdded:"2014-12-17 10:03:46.000Z"Сравнение даты в mongodb

Я написал следующее query-

db.collection.find({DateAdded:{"$lte":new Date("2015-06-17 10:03:46.000Z")}}) 

Но результаты не получает ни одной записи, даже если имеются записи для дат Шифрование до 2015-06-24.

+1

Ваша дата в формате строки. Вам нужно «сохранить/обновить» его в формате IOSDate, чтобы получить результат из текущего запроса. – Vishwas

+0

Это только формат даты. – maggs

+2

Попробуйте '' $ gte ": ISODate (" 2015-06-17 10: 03: 46.000Z ")' –

ответ

6

Вы можете использовать ISODate для сравнения дат:.

"$lte" : ISODate("2015-06-17T10:03:46Z") 

ISODate работает, потому что это формат ваша дата в

new Date() 

оборачивает дату в ISODate помощника, но не может преобразовать в ваш запрос.

Проверить эту ссылку для получения дополнительной информации: http://docs.mongodb.org/manual/core/shell-types/

0

Вы можете использовать это:

db.collection.find({DateAdded:{"$lte":new Date("2017-11-01")}}) 

Это будет конвертировать формат даты в этом:

ISODate("2017-11-01T00:00:00Z") 
-1

Убедитесь, что дата в mongodb имеет тип Date. Затем преобразование даты ISO должно автоматически работать с помощью манго. , например

Task.find({ date: { $gt: "2018-01-30T16:08:53.758Z", $lte: "2018-02-01T02:08:53.770Z" }}) 

проверить это сообщение из stack question

0

Использование ISODate

format: {'field': {$operator: ISODate(yyyy-MM-ddThh:mm:ss.msZ)}} 

example: db.getCollection('yourCollection').find({'sampleField': {$lte: ISODate('2015-06-17T10:03:46.000Z')}}) 

 Смежные вопросы

  • Нет связанных вопросов^_^