在Java Sprintboot应用程序中,基于两个具有OR条件的字段检索MongoDB文档



我有一个MongoDB集合,里面有两个文档,比如

{
"field1":"value1"
}

{
"field1":"value2"
"field2":"value1"
}

我想在我的Springboot微服务中检索这两个文档。

Query query = new Query(Criteria.where("field1").is("value1").orOperator(Criteria.where("field2").is("value1")))
List<Something> list = mongoTemplate.find(query, Something.class);

上面的代码返回一个空列表,而下面的代码返回第一个文档。

Query query = new Query(Criteria.where("field1").is("value1"))
List<Something> list = mongoTemplate.find(query, Something.class);

如何检索这两个文档?

您需要使用这样的语法,即类似orOperator(where1, where2)而不是where1.orOperator(where2):

Criteria criteria1 = new Criteria();
criteria1.orOperator(
Criteria.where("dumEmployeeId").is(user.getId()),
Criteria.where("toDumEmployeeId").is(user.getId())).
andOperator(
new Criteria().orOperator(
Criteria.where("priority").is("Important"),
Criteria.where("priority").is("Urgent")
)
);

最新更新