2015-11-30 4 views
1

из оболочки mongodb, у меня возникла проблема с запросом на дату. Это тест база данных, и проблема лучше всего объяснить на примере:Mongodb Date() возвращает неправильное значение

Пример поле в коллекции

"createdOn" : ISODate("2015-11-23T00:49:01.800Z") 

Когда я ввожу дату этого месяца для тестирования в оболочке, такие как:

new Date(2015, 11, 23) 
ISODate("2015-12-23T05:00:00Z") 

Вы можете видеть, что месяц - это голова, а это значит, что он возится с моими запросами. Где я должен упасть обратно в месяц для того, чтобы получить то, что мне нужно в этом месяце:

db.collection.find({'createdOn': {'$lte': new Date(2015, 10, 23)}}).count() 
306 
db.collection.find({'createdOn': {'$gte': new Date(2015, 10, 23)}}).count() 
10 

Все записи выше были созданы в ноябре, но при использовании правильного месяц:

db.collection.find({'createdOn': {'$gte': new Date(2015, 11, 23)}}).count() 
0 

Как делает это даже происходит?

ответ

1

То, что вы делаете, это почти сразу, но вы пропустили на точку, что:

Javascript рассчитывает месяц от 0 до 11, а не 1 к 12

января составляет 0. декабрь 11. Таким образом, чтобы увидеть для записей, созданных в ноябре вы должны подать запрос как:

db.collection.find ({ 'createdOn': { '$ GTE': новый Дата (2015, 10, 23)}})

+0

haha ​​darn it !! Спасибо! –

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