Reputation: 6466
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.
Upvotes: 28
Views: 22834
Reputation: 4691
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)));
Upvotes: 5
Reputation: 12932
As far as I remember in order to use orOperator you should do:
Query query = new Query(new Criteria().orOperator(criteriaV1,criteriaV2));
Upvotes: 65