sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur kan jag bygga en $or-fråga för MongoDB med Java-drivrutinen?

Du har rätt i att "standard" för att ange flera fält i en fråga är att varje fält fungerar som ett villkorligt filter, och därför är en OCH-operation.

Du kan utföra MongoDB-frågor med en OR-sats genom att använda $or-operanden som har följande syntax:

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

Där varje klausul kan vara en fråga. $or behöver inte vara en operand på toppnivå, men om det är det kan MongoDB använda ett index för varje separat klausul.

I ditt exempel vill du sluta med denna fråga :

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

Som kan konstrueras i Java genom :

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);


  1. Hur man hämtar alla samlingsnycklar som innehåller ett visst (String) värde i mongodb

  2. Infoga en lista i en annan lista i Redis

  3. Vad är BSON och exakt hur skiljer det sig från JSON?

  4. Tvetydighet om $geoNear i aggregerad fråga