2014-11-04 4 views
0

Я хочу найти конкретный документ через диапазон дат (beginDate должен быть больше или равен - и closeDate должен быть меньше или равен текущей дате). документ выглядит следующим образом:MongoDB найти документ по дате - JavaScript

{ "beginDate" : ISODate("2014-11-03T23:00:00Z"), 
    "closeDate" : ISODate("2014-11-10T23:00:00Z"), 
    "desc" : "Test", 
    "status" : "ok", 
    "playerId" : "ZLkQzaY7DDvwL8sRj", 
    "_id" : "kozi9eHcLYa2LbWDG" } 

Мой запрос выглядит следующим образом:

var doc = TestData.findOne({ 
    playerId: player._id, 
    beginDate: { $gte: new Date(new Date().toISOString()) }, 
    closeDate: { $lte: new Date(new Date().toISOString()) } 
}); 

К сожалению, это не работает. Как я могу это решить? Любая помощь будет принята с благодарностью.

+1

делать объекты даты, которые вы пытаетесь фильтровать, должны быть экземплярами 'ISODate'? – dm03514

+0

Да, он хранится в БД как экземпляры ISODate, я просто хочу получить документ для «сегодня», который находится в пределах диапазона. – user3475602

+0

Я действительно не понимаю, почему это не работает. – user3475602

ответ

0

У вас есть логика назад при сравнении, поэтому вам необходимо поменять использование $lte и $gte. Вы хотите найти документы, где beginDate имеет значение меньше или равно текущее время, а closeDate имеет значение больше или равно текущего времени. Вы также можете использовать new Date(), чтобы получить текущее время.

var doc = TestData.findOne({ 
    playerId: player._id, 
    beginDate: { $lte: new Date() }, 
    closeDate: { $gte: new Date() } 
}); 
Смежные вопросы