如何在Quarkus MongoDB Panache简化查询中实现$nin查询?
在Quarkus MongoDB Panache中执行$nin查询的解决思路
当然可以在Quarkus MongoDB Panache的简化查询中实现$nin逻辑,你之前的写法问题出在关键字使用上,以下是具体解决方法:
使用正确的简化查询关键字:Panache的简化查询语法(类JPQL风格)中,对应MongoDB
$nin的是NOT IN,而非nin。把你的查询语句修改为:"claimentId = ?1 AND processingOrganisation = ?2 AND status = ?3 AND claimId NOT IN ?4"确保参数类型正确:传递给
NOT IN的参数必须是集合类型(比如List、Set),不能是单个值或基本数组。例如在Java代码中,你需要传入List<String> excludedClaimIds这类参数。原生查询备选方案:如果简化查询仍有问题,可以直接使用Panache提供的原生MongoDB查询能力,更贴近MongoDB原生语法:
mongoCollection().find( Filters.and( Filters.eq("claimentId", claimentId), Filters.eq("processingOrganisation", processingOrganisation), Filters.eq("status", status), Filters.nin("claimId", excludedClaimIds) ) ).intoList();调试辅助:如果想验证生成的查询是否正确,可以开启Panache的调试日志,在
application.properties中添加:quarkus.log.category."io.quarkus.mongodb.panache".level=DEBUG这样就能看到Panache转换后的原生MongoDB查询语句,方便排查问题。
内容的提问来源于stack exchange,提问作者robert080262
相关产品推荐
相关产品推荐

