Поддержка Querydsl для оператора MongoDB $ all - PullRequest
0 голосов
/ 21 декабря 2018

Я получаю доступ к MongoDB, используя данные о Spring и Querydsl.Документы в моей коллекции имеют поле tags со значением массива.Я хотел бы найти документы, для которых tags содержит все заданные значения.То же самое, что делает оператор $ all MongoDB.Я пробовал следующее:

Set<String> tags = ...["red", "blue"]

QDoc $ = QDoc.doc;
BooleanBuilder where = new BooleanBuilder();
...
if (!isEmpty(tags)) {
  tags.forEach(tag -> where.and($.tags.contains(tag)));
}
...
return docRepo.findAll(where, pageable);

Использование приведенного выше кода приводит к запросу, в котором последний элемент tags set выигрывает.
{ "tags": "blue"}

Есть лиспособ запроса документов по подмножеству значений полей массива в Querydsl?

...