MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment effectuer une recherche générique dans MongoDB à l'aide de Java

Vous pouvez faire une Expression régulière match sur les champs dans Mongo, voici comment vous feriez le premier de vos modèles :

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

Attention cependant, de nombreuses correspondances d'expressions régulières nécessitent une analyse complète de la table. Cela signifie que si vous les exécutez sur une grande collection, le moteur devra parcourir tous les documents (probablement en touchant le disque) et vérifier chacun individuellement pour une correspondance. C'est beaucoup plus lent que les requêtes qui utilisent des index.

Les seules expressions régulières qui atteindront un index sont les correspondances de préfixe sensibles à la casse. Vous pouvez rechercher tous les "Mon*" comme ceci et utiliser un index :

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

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