Как запросить документы с нулевыми значениями MongoRepository Spring Data MongoDB - PullRequest
1 голос
/ 24 мая 2019

Я не смог инициализировать значение false в Spring Data MongoDB, поэтому в моем запросе я хочу искать документы с полем, установленным в false или null.

Следующий фрагмент кода не работает:

@RestResource(rel = "findInactiveOrders", path = "findInactiveOrders")
Order findByIdAndIsActiveFalseOrIsActiveNull(@Param("id"))

1 Ответ

0 голосов
/ 27 мая 2019

Я не уверен, что вы можете выполнить такой запрос, используя имя метода данных Spring. Поскольку ваш запрос будет оцениваться как _id == "id" AND isActive == false OR isActive == null, а не _id == "id" AND ( isActive == false OR isActive == null ).

Если случайно isActive может быть только true, false или null, вы можете попробовать

@RestResource(rel = "findInactiveOrders", path = "findInactiveOrders")
Order findByIdAndIsActiveNot(@Param("id"), true)

В противном случае вам потребуется использовать другой метод запроса, предоставляемый Spring data mongodb, такой как MongoTemplate вспомогательный класс или @Query аннотация.

@ Аннотация запроса

@RestResource(rel = "findInactiveOrders", path = "findInactiveOrders")
@Query("{$and: [{'_id': :#{#id}}, $or: [{ 'isActive':false}, {'isActive': null}]]}")
Order findByIdAndIsActiveNot(@Param("id"))
...