У меня есть модель календаря со следующей схемой (для сохранения статуса транспортного средства в соседних временных интервалах)
const calendarSchema = new Schema( {
vehicleId: String,
startTime: Date,
endTime: Date,
availability: {type:String, enum: [ 'Available', 'Booked', 'Partially_Available']
})
Теперь я хотел бы найти автомобили, которые либо Available
, либо Partially_Available
между 2021-01-01T12:00:00
до 2021-01-01T15:00:00
Для ID транспортного средства: 123 У меня есть следующие документы в коллекции:
{
vehicleId:123,
startTime: 2021-01-01T12:00:00,
endTime: 2021-01-01T13:00:00
availability: 'Available'
},
{
vehicleId:123,
startTime: 2021-01-01T13:00:00,
endTime: 2021-01-01T14:00:00
availability: 'Partially_Available'
}
{
vehicleId:123,
startTime: 2021-01-01T14:00:00,
endTime: 2021-01-01T15:00:00
availability: 'Available'
}
Теперь Как мне написать запрос так, чтобы я получил vehicleId
s, который либо Available
или Paritally_Available
между 2021-01-01T12:00:00
до 2021-01-01T15:00:00
Это означает, что если какое-либо транспортное средство имеет статус Booked
для каких-либо временных интервалов между этими двумя интервалами, оно не должно появляться в результате. Для вышеприведенного случая vehicleId:123
должно появиться в результате. Если какая-либо из записей выше имела статус Booked
, vehicleId:123
не должно появиться в результате.
Заранее благодарю за любое предложение. Последние несколько дней я чесал голову, чтобы найти решение, но пока не смог его найти.