2016-02-01 3 views
3

У меня есть следующие коллекции:Mongoose запрос между датой начала и датой окончания данной коллекцией

db.sponsoreds.insert([ 
{ 
    _id: 1, 
    bannerPath: "dms1.jpg", 
    startDate: new Date("December 12, 2015 12:00:00"), 
    endDate: new Date("November 13, 2016 00:00:00") 
}, 
{ 
    _id: 2, 
    bannerPath: "dms2.jpg", 
    startDate: new Date("January 12, 2015 12:00:00"), 
    endDate: new Date("January 13, 2016 00:00:00") 
}, 
{ 
    _id: 3, 
    bannerPath: "dms3.jpg", 
    startDate: new Date("November 12, 2017 12:00:00"), 
    endDate: new Date("November 13, 2018 00:00:00") 
}, 
{ 
_id: 4, 
bannerPath: "grs1.jpg", 
startDate: new Date("February 01, 2016 12:00:00"), 
endDate: new Date("February 28, 2016 00:00:00") 
} 
]) 

Как я запросить документы, которые сегодня между их датами начала и окончанием?

EDIT: Это не дублирует предложенный «уже спрашивали-вопрос» так:

Я спрашиваю о том, сегодня находится между 2 датами в документе, и не является ли дата в документ находится между 2 датами.

+2

Возможная Дубликат [Поиск объектов между двумя датами MongoDB] (HTTP: // StackOverflow .com/questions/2943222/find-objects-between-two-dates-mongodb) –

+0

@BlakesSeven Это не дубликат, так как я спрашиваю, существует ли сегодня между двумя датами в документе, и вы предположили, что дублирование спрашивает, дата в документе находится между двумя датами. – TBE

+1

И все же ваш принятый ответ использует точно такую ​​же логику, как указано. Также отмечая, что '$ и' не требуются там, поскольку все условия запроса MongoDB уже являются« и »условиями. Поэтому «одно поле» или «два поля» не имеет значения. Речь идет о «использовании операторов диапазона». –

ответ

5
db.sponsoreds.find({$and:[{startDate:{$lte:new Date()}},{endDate:{$gte:new Date()}}]}) 

Вернется

{ 
     "_id" : 1, 
     "bannerPath" : "dms1.jpg", 
     "startDate" : ISODate("2015-12-12T17:00:00Z"), 
     "endDate" : ISODate("2016-11-13T05:00:00Z") 
} 

при запуске сегодня в 2016-02-01T10: 01: 41.539Z

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