java - MongoTemplate如何在查询中添加两个以上 "orOperator"

标签 java spring mongodb

我需要在 MongoDB 中执行一个包含 4 个逻辑“或”的请求,我的意思是 ((a == null || a == 0) || (b == null || b == 0))

我正在尝试执行此请求,但捕获异常引起:org.springframework.data.mongodb.InvalidMongoDbApiUsageException:由于 com.mongodb.BasicDocument 的限制,您无法添加第二个'空'标准。查询已包含 '{ "$or": [{ "a": null}, { "a": 0.0}]}'

这是我的代码:

    Criteria aCriteria = new Criteria();
    aCriteria.orOperator(Criteria.where("a").is(null), Criteria.where("a").is(0.0d));
    Criteria bCriteria = new Criteria();
    bCriteria.orOperator(Criteria.where("b").is(null), Criteria.where("b").is(0.0d));

    Query query = new Query();
    query.addCriteria(aCriteria);
    query.addCriteria(bCriteria);
    List<POJO> arbitrages = mongoTemplate.find(query, POJO.class, "DB");

如何解决这个问题?

最佳答案

以下查询Criteria将使用orOperator工作:

Criteria c = new Criteria().orOperator(
                              Criteria.where("a").is(0),
                              Criteria.where("a").is(null),
                              Criteria.where("b").is(0),
                              Criteria.where("b").is(null)
);

Query query = new Query(c);
List<POJO> result = mongoTemplate.find(query, POJO.class, "DB");

关于java - MongoTemplate如何在查询中添加两个以上 "orOperator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62447700/

相关文章:

java - 打印数组元素的索引 : Java

java - 在 Scala 中创建 Java 枚举

java - Spring-Data 找不到通过 MongoDB shell 创建的索引的 IndexFields

node.js - Mongoose 是否实现了 $isolated 运算符

java - 没有名为 EntityManager 的持久性提供程序...错误

java - AspectJ:用于选择类上方法的目标与签名模式

java - 如何使用表单 :select outside the form? spring、hibernate 中的项目

java - 具有所有基本自动连线服务的基本 Controller

java - 异步 REST 客户端

mongodb - 从 MongoDB 中获取产品属性的计数