Я хотел найти все документы в mongodb, а также использовать данные весны mongodb, в частности, через хранилище mongo.Если это будет в MySQL, это будет выглядеть примерно так:
MySQL:
select * from car_reservations
where
car_id = "abc123" and
schedule_start <= now() and
schedule_end >= now()
Примечание: есть 2 поля (schedule_start и schedule_end), которые являются datetime(йода)
Проблемы:
1.Что эквивалентно этому в mongodb?Это мой первоначальный запрос, использующий только car_id в качестве фильтра
db.car_reservations.find({"car_id":"abc123"}).pretty()
, но я не уверен, как выразить фильтры для schedule_start
и schedule_end
.
2.Используя Spring Data MongoDB (MongoRepository), как создать запрос метода по имени метода?Если это невозможно, как выполнить запрос с помощью аннотации запроса?
public class CarReservation {
@Id
private String id;
private String carId;
private DateTime scheduleStart; //Joda Time
private DateTime scheduleEnd; //Joda Time
//Getters and Setters
}
public interface CarReservationDao extends MongoRepository<CarReservation, String> {
List<CarReservation> findAllByCarId(String carId);
// TODO: find all car reservations where car id is equal to something,
// and schedule start is less than or equal to now()
// and schedule end is greater than or equal to now()
// [scheduleStart] <------ [now] ------> [scheduleEnd]
}
Пример данных для бронирования автомобиля:
{
"_id" : "01onqb9fuietqfqpqabrich92n_20181226T200000Z",
"scheduleStart" : "2018-12-26T20:00:00",
"scheduleEnd" : "2018-12-26T22:00:00",
"carId" : "05a10e0e-eccb-426f-bd90-56eaa4f38271"
}
{
"_id" : "01onqb9fuietqfqpqabrich92n_20181226T000000Z",
"scheduleStart" : "2018-12-26T00:00:00",
"scheduleEnd" : "2018-12-26T23:59:59",
"carId" : "75a10e0e-ecfb-226d-bd96-36eaa4f38272"
}
Спасибо!