2017-04-09 4 views
0

ich eine Abfrage in MongoDB ausgeführt werden soll, die unterschiedliche documnets einer Sammlung zurück, die mindestens eines der Elemente eines Arrays von Strings enthalten. Zum Beispiel, wenn ich eine Liste haben, die A enthalten, B, C, sollte die Abfrage alle verschiedene Dokumente zurück, die „A“ OR „B“ OR „C“ enthalten. Ich habe diese Abfrage geschrieben:Suche Dokument, das mindestens ein Element eines String-Array enthält

BasicDBObject query = new BasicDBObject("A", new BasicDBObject("$exists", true)); 
query.append("B", new BasicDBObject("$exists", true)). 
append("C", new Basicstrong textDBObject("$exists", true)); 

aber es gibt alle Dokumente, das "A" UND "B" UND "C" hat. Wie kann ich das machen? Vielen Dank.

Antwort

1

Sie haben explizit die Dokumente $or.

BasicDBList orList = new BasicDBList(); 
orList.add(new BasicDBObject("A", new BasicDBObject("$exists", true))); 
orList.add(new BasicDBObject("B", new BasicDBObject("$exists", true))); 
orList.add(new BasicDBObject("C", new BasicDBObject("$exists", true))); 

BasicDBObject or = new BasicDBObject("$or", orList); 
+0

Das ist eine gute Idee und funktioniert ordnungsgemäß, aber die Laufzeit ist hoch. Gibt es eine andere Art und Weise? @Veeram – fidelroha

Verwandte Themen