sql >> Database >  >> NoSQL >> MongoDB

Zoeken met jokertekens in MongoDB uitvoeren met Java

U kunt een Reguliere expressie doen match op velden in Mongo, zo zou je de eerste van je patronen doen:

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

Wees echter voorzichtig, veel overeenkomsten met reguliere expressies vereisen een volledige tabelscan. Dit betekent dat als je ze vergelijkt met een grote verzameling, de engine alle documenten moet herhalen (waarschijnlijk op schijf) en elk afzonderlijk moet controleren op een overeenkomst. Dit is veel langzamer dan zoekopdrachten die indexen gebruiken.

De enige reguliere expressies die een index raken, zijn hoofdlettergevoelige voorvoegsels. U kunt op deze manier naar alle "Mon*" zoeken en een index gebruiken:

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

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



  1. Meteor.js-verzameling leeg op client

  2. Meteor.js en Mongoose Compatibiliteit

  3. Python + MongoDB - Cursor-iteratie te traag

  4. Spring Data Mongo Query om met meerdere velden te zoeken en terug te komen in één gesprek