带有Spring Data MongoDB的QueryDSL-包含所有

时间:2019-03-03 15:07:57

标签: mongodb kotlin spring-data-mongodb querydsl

我想实现类似于contains all的功能,但是找不到对mongodb - $all的任何支持,因此我尝试手动完成此操作。

我的实体有一组简单的tags-Set<String>

val taskEntity = QTaskEntity.taskEntity
val where = BooleanBuilder()

where.and(taskEntity.tags.contains("a"))
where.and(taskEntity.tags.contains("b"))

但是生成的查询仅考虑ba被完全忽略。

find using query: { "tags" : "b" }...

此外:我还有另一个过滤器来查找具有指定的taskstags)中的任何一个的contains any-按预期使用mongodb $in可以正常工作:

where.and(taskEntity.tags.any().`in`(["a", "b"])))
...
find using query: { "tags" : { "$in" : ["a", "b"] } }

但是,如果我将两者结合使用,则contains any将被忽略,其结果与第一个代码段相同。

我在这里做错什么了吗?这是bug还是mongodb上无法完成的事情? Kotlin可能在这里有错吗(生成的类对我来说很好)?仅通过前面提到的$all可以在mongodb中完成此操作,而querydsl不支持吗?

0 个答案:

没有答案