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

So führen Sie eine Wildcard-Suche in MongoDB mit Java durch

Sie können einen regulären Ausdruck erstellen Gleiche Felder in Mongo an, so würden Sie das erste Ihrer Muster ausführen:

Pattern p = Pattern.compile("Mon.*DB", CASE_INSENSITIVE);
BasicDBObject query = new BasicDBObject("name", p);

// finds all records with "name" matching /Mon.*DB/i
DBCursor cursor = collection.find(query);

Seien Sie jedoch vorsichtig, da viele Übereinstimmungen mit regulären Ausdrücken einen vollständigen Tabellenscan erfordern. Das bedeutet, dass die Engine, wenn Sie sie mit einer großen Sammlung ausführen, alle Dokumente durchlaufen muss (wahrscheinlich auf die Festplatte trifft) und jedes einzeln auf Übereinstimmung überprüft. Dies ist viel langsamer als Abfragen, die Indizes verwenden.

Die einzigen regulären Ausdrücke, die einen Index treffen, sind Präfixübereinstimmungen mit Berücksichtigung der Groß-/Kleinschreibung. Sie könnten so nach allen "Mon*" suchen und einen Index verwenden:

Pattern p = Pattern.compile("^Mon.*");
BasicDBObject query = new BasicDBObject("name", p);

// finds all records with "name" matching /^Mon.*/
DBCursor cursor = collection.find(query);