Spring Mongo Repository находит документы, в которых дата начала и конец даты подпадают под текущую дату - PullRequest
0 голосов
/ 26 декабря 2018

Я хотел найти все документы в 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"
}

Спасибо!

...