2014-01-21 6 views
5

Ich möchte die Objekte in meiner Sammlung abfragen, wie ein gegebener Wert zu den Werten im stringArray gehören mussFinden Sie Elemente in einer Sammlung, wo ein Element ein Feld hat, das eine Liste ist und ein gegebener Wert zur Liste gehören muss

string ist der Name des Feldes für jede Obejct, die eine Liste von Strings enthält

die strucutre meiner Sammlung in mongodb ist

Object1 
{ 
    field1 
    field2 
    stringArray[2] 
     0  String0 
     1  String1 
} 

Object2 
{ 
    field1 
    field2 
    stringArray[3] 
     0  String0 
     1  String1 
     2  String2 
} 

}

Meine Frage ist:

 Query query = new Query(); 
    query.addCriteria(
      Criteria.where(theValueIamlookingFor).in("stringArray")     
    );    
    return mongoTemplate.find(query, myObject.class); 

Bisher ist es nicht funktioniert hat.

Irgendwelche Ideen?

Antwort

9

Denken Sie, Sie haben gerade dort Reihenfolge umgedreht. Bitte versuchen Sie es:

Criteria.where("stringArray").in(theValueIamlookingFor)

anstelle der oben

+0

Vielen Dank Es funktioniert! Aber ich bin ein wenig verwirrt über die Syntax, ich dachte, dass die Syntax war: wo (das Element). in (das Array) während in Relaity ist es, wo (das Array) in (das Element) – stackSaru

+0

Tatsächlich ist die Syntax ein wenig kontraintuitiv, aber es ist der Schlüssel zuerst, gefolgt von einer Liste von möglichen Werten. Man hätte erwartet, die Äpfel im Korb zu finden und nicht umgekehrt –

Verwandte Themen