Spring Data MongoDB - Criteria API OrOperator 无法正常工作
Posted
技术标签:
【中文标题】Spring Data MongoDB - Criteria API OrOperator 无法正常工作【英文标题】:Spring Data MongoDB - Criteria API OrOperator is not working properly 【发布时间】:2013-03-29 18:31:40 【问题描述】:我正面临 Spring Data MongoDB Criteria API orOperator
问题。
不规则动词的查询结果如下:(终端输出)
> db.verb.find('v2':'wrote');
"_id" : ObjectId("5161a8adba8c6390849da453"), "v1" : "write", "v2" : "wrote", "v3" : "written"
我使用Spring Data MongoDB Criteria API通过v1
或v2
值查询动词:
Criteria criteriaV1 = Criteria.where("v1").is(verb);
Criteria criteriaV2 = Criteria.where("v2").is(verb);
Query query = new Query(criteriaV1.orOperator(criteriaV2));
List<Verb> verbList = mongoTemplate.find(query, Verb.class)
但不幸的是verbList
没有任何项目。
【问题讨论】:
【参考方案1】:我们需要用 OR 条件明确指定一个新条件 - 试试下面的例子
Criteria criteria = Criteria.where("field1").is(val1).
.andOperator(new Criteria().orOperator(Criteria.where("field2").is(filterVal),
Criteria.where("field3").is(filterVal)));
【讨论】:
【参考方案2】:据我所知,为了使用 orOperator 你应该这样做:
Query query = new Query(new Criteria().orOperator(criteriaV1,criteriaV2));
【讨论】:
感谢您的帮助;在我检查应用程序日志后,我看到第一个参数被用作 AND 标准。因此,解决方案是使用您编写的 Criteria 的新实例或添加始终为真的条件。 如何使用多个 orOperator 来搜索多个条件? 算子方法可以接受任意数量的参数以上是关于Spring Data MongoDB - Criteria API OrOperator 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
Spring -Data MongoDB问题与作为接口的字段
使用Spring访问Mongodb的方法大全——Spring Data MongoDB
如何在 spring-boot 中禁用 spring-data-mongodb 自动配置