Spring Data MongoDB - Criteria API OrOperator is not working properly

随声附和 提交于 2019-12-04 10:22:19

问题


I'm facing Spring Data MongoDB Criteria API orOperator problem.

Here's query result for irregular verbs: (Terminal output)

> db.verb.find({'v2':'wrote'});
{ "_id" : ObjectId("5161a8adba8c6390849da453"), "v1" : "write", "v2" : "wrote", "v3" : "written" }

And I query verbs by their v1 or v2 values using Spring Data MongoDB Criteria API:

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)

But unfortunately verbList doesn't have any item.


回答1:


As far as I remember in order to use orOperator you should do:

Query query = new Query(new Criteria().orOperator(criteriaV1,criteriaV2));



回答2:


We need explicitly specify a new criteria with OR condition - try with below example

Criteria criteria = Criteria.where("field1").is(val1).
                .andOperator(new Criteria().orOperator(Criteria.where("field2").is(filterVal),
                        Criteria.where("field3").is(filterVal)));


来源:https://stackoverflow.com/questions/15866175/spring-data-mongodb-criteria-api-oroperator-is-not-working-properly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!