Spring MongoDB -编写具有多个$或条件的查询



对于赋值,我必须编写具有多个OR条件的查询。

如果我不得不写它使用MongoDB查询语言,这将是微不足道的

{ $and : [ 
{ $or : [ { "field1" : "value1" }, { "field2" : "value2" } ] }, 
{ $or : [ { "field3" : "value3" }, { "field3" : null }, { "field3" : { $exists : true }} ] } 
] }

我有一种方法来实现这个使用Spring MongoDB ?

我试着

Query query = new Query();
query.addCriteria(new Criteria().orOperator(
Criteria.where("field1").is("value1"),
Criteria.where("field2").is("value2"),
));
query.addCriteria(new Criteria().orOperator(
Criteria.where("field3").is("value3"),
Criteria.where("field3").is(null),
Criteria.where("field3").exists(false),
));

和also tried

Query query = new Query();
query.addCriteria(
Criteria.where("field3").is("value3")
.orOperator(Criteria.where("field3").is(null))
.orOperator(Criteria.where("field3").exists(false))
.andOperator(
Criteria.where("field1").is("value1")
.orOperator(Criteria.where("field2").is("value2"))
);

当尝试执行两个查询时,我得到以下消息:

由于com.mongodb。BasicDocument,你不能添加第二个'$or'表达式指定为[…]

任何帮助都将是非常感激的。

您可以尝试使用这段代码:

Criteria firstOrCriteria = new Criteria().orOperator(
Criteria.where("field1").is("value1"),
Criteria.where("field2").is("value2"));
Criteria secondOrCriteria = new Criteria().orOperator(
Criteria.where("field3").is("value3"),
Criteria.where("field3").is(null),
Criteria.where("field3").exists(true));
Criteria andCriteria = new Criteria().andOperator(firstOrCriteria, secondOrCriteria);
Query query = new Query(andCriteria);

相关内容

  • 没有找到相关文章

最新更新