MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie kann ich mit dem Java-Treiber eine $or-Abfrage für MongoDB erstellen?

Sie haben Recht, dass der "Standard" für die Angabe mehrerer Felder in einer Abfrage darin besteht, dass jedes Feld als bedingter Filter dient und somit eine UND-Operation ist.

Sie können MongoDB-Abfragen mit einer OR-Klausel ausführen, indem Sie den $or-Operanden verwenden, der die folgende Syntax hat:

db.col.find({$or:[clause1, clause2]})

Wobei jede Klausel eine Abfrage sein kann. $or muss kein Operand der obersten Ebene sein, aber wenn es ein Operand ist, kann MongoDB einen Index für jede einzelne Klausel verwenden.

In Ihrem Beispiel möchten Sie mit dieser Abfrage enden:

db.col.find({$or:[{"post_title", regex}, {"post_description", regex}]});  

Welches in Java konstruiert werden kann durch :

DBObject clause1 = new BasicDBObject("post_title", regex);  
DBObject clause2 = new BasicDBObject("post_description", regex);    
BasicDBList or = new BasicDBList();
or.add(clause1);
or.add(clause2);
DBObject query = new BasicDBObject("$or", or);