我正在使用spring数据和Querydsl访问MongoDB。
我的收藏集中的文档有一个带有数组值的字段tags
。
我想找到tags
包含所有给定值的文档。与MongoDB的$all运算符相同。
我尝试了以下方法:
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
集的最后一个元素获胜。
{ "tags": "blue"}
是否可以通过Querydsl中的数组字段值子集查询文档?