У меня есть документы в коллекции MongoDB, который выглядит, как показано ниже:Как запросить для объектов между датой диапазонами
"listingReservation" : {
"reservationFromDate" : new Date("14.1.2015 00:00:00"),
"reservationToDate" : new Date("17.1.2015 00:00:00"),
"reservationCreatedBy" : "[email protected]",
"reservationCreatedOn" : "",
"reservationChangedBy" : "",
"reservationChangedOn" : "",
"reservationStatus" : "pending" //status can be pedning, accepted or rejected
}
Теперь, когда администратор принимает заказ, другие оговорки между теми же диапазонами дат и оговорками, который Охватывая принятое резервирование должно быть настроено на отклоненный статус.
Теперь, как я могу найти, если есть уже оговорки между новыми датами бронирования или если есть уже зарезервированная оговорка для новых дат бронирования.
Я попытался выполнить запрос ниже, но, очевидно, все условия не работают.
db1.reservationTable.update(
{
$and: [{
$or: [{
$or: [
{
'listingReservation.reservationFromDate': {
$gte: new Date(req.body.listingReservation.reservationFromDate),
$lt: new Date(req.body.listingReservation.reservationToDate)
}
},
{
'listingReservation.reservationToDate': {
$gte: new Date(req.body.listingReservation.reservationFromDate),
$lt: new Date(req.body.listingReservation.reservationToDate)
}
}
],
$and: [
{'listingReservation.reservationFromDate': {$lte: new Date(req.body.listingReservation.reservationFromDate)}},
{'listingReservation.reservationToDate': {$gte: new Date(req.body.listingReservation.reservationToDate)}}
]
}]
},
{'listingBasics.listingId': req.body.listingBasics.listingId},
{_id: {$ne: mongojs.ObjectId(req.body._id)}},
{'listingBasics.listingOwner': req.user.username}
]
},
{
$set: {'listingReservation.reservationStatus': 'rejected'}
})
Это охватывает все логические базы. Я не уверен, почему я не смог найти эту упрощенную форму запроса. Красиво сделано! – NoOutlet
@Wdberkeley, спасибо тонну, прекрасно работает, так элегантно. –
@NoOulet, спасибо за ваши входы тоже. –