2013-04-07 10 views
10

Mam do czynienia z problemem Spring Data MongoDB Criteria API orOperator.Dane wiosenne MongoDB - API Criteria OrOperator nie działa poprawnie

Oto wynik zapytania o nieregularnych czasowników: (wyjście Terminal)

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

I kwerendy czasowniki przez ich v1 lub v2 wartości korzystając Wiosna danych 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) 

Ale niestety verbList nie ma żadnego przedmiotu.

Odpowiedz

29

O ile pamiętam, w celu wykorzystania orOperator należy zrobić:

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

dzięki za pomoc; po sprawdzeniu dzienników aplikacji widzę, że pierwszy parametr jest używany jak kryteria ORAZ. Tak więc rozwiązanie wykorzystuje nową instancję Kryteriów, tak jak napisałeś lub dodając zawsze prawdziwy warunek. – talha06

+0

Jak możemy użyć wielu orOperator do wyszukiwania wielu kryteriów? –