我需要在 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/