Spring Data & Couchbase - поиск документов без определенного поля - PullRequest
0 голосов
/ 17 октября 2018

В моем приложении Spring Boot у меня есть база данных couchbase, в которой хранятся документы.

Я CRUD корзины с интерфейсом, который расширяет CouchbasePagingAndSortingRepository.

Я пытаюсь создать запросэто выбирает все документы, которые не имеют определенного поля .

Итак, предположим, что у нас есть эти документы, и мы хотели бы найти те, которые не имеют "цвет":

{
 "type":"Cat"
 "name":"Oscar",
 "color":"red"
}

{
 "type":"Cat"
 "name":"Polly"
}

Я попытался создать несколько методов в своем интерфейсе:

public interface PetRepository<Pet, S> extends CouchbasePagingAndSortingRepository<Pet, String> {

List<Pet> findAllByTypeAndColorNull(String type);

List<Pet> findAllByTypeAndColorIsNull(String type);

List<Pet> findAllByTypeAndColorFalse(String type);

Но все они возвращают пустой список, а не ожидаемый документ (ы).

1 Ответ

0 голосов
/ 17 октября 2018

Проблема в том, что это поле просто не существует в вашем документе, поэтому правильный подход - использовать ключевое слово MISSING : https://docs.couchbase.com/server/5.5/n1ql/n1ql-language-reference/comparisonops.html

@Query("#{#n1ql.selectEntity} where #{#n1ql.filter} and companyId = $1 and (yourAtrribute IS NULL OR yourAtrribute IS MISSING )")
List<Checklist> listCheckCompanyId(String companyId);
...