Puoi eseguire un'espressione regolare corrispondenza sui campi in Mongo, ecco come faresti il primo dei tuoi schemi:
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);
Fai attenzione, tuttavia, molte corrispondenze di espressioni regolari richiedono una scansione completa della tabella. Ciò significa che se li esegui su una raccolta di grandi dimensioni, il motore dovrà scorrere tutti i documenti (probabilmente colpendo il disco) e controllarli singolarmente per una corrispondenza. Questo è molto più lento delle query che utilizzano gli indici.
Le uniche espressioni regolari che colpiranno un indice sono le corrispondenze dei prefissi con distinzione tra maiuscole e minuscole. Puoi cercare tutti i "Lun*" in questo modo e utilizzare un indice:
Pattern p = Pattern.compile("^Mon.*");
BasicDBObject query = new BasicDBObject("name", p);
// finds all records with "name" matching /^Mon.*/
DBCursor cursor = collection.find(query);