Можете да направите регулярен израз съвпадение на полета в Mongo, ето как бихте направили първия от вашите шаблони:
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);
Внимавайте обаче, много съвпадения на регулярни изрази изискват пълно сканиране на таблица. Това означава, че ако ги стартирате срещу голяма колекция, машината ще трябва да обходи всички документи (вероятно удряйки диск) и да проверява всеки поотделно за съвпадение. Това е много по-бавно от заявките, които използват индекси.
Единствените регулярни изрази, които ще попаднат в индекс, са съвпадения на префикси, чувствителни към главни и малки букви. Можете да търсите всички „Mon*“ по този начин и да използвате индекс:
Pattern p = Pattern.compile("^Mon.*");
BasicDBObject query = new BasicDBObject("name", p);
// finds all records with "name" matching /^Mon.*/
DBCursor cursor = collection.find(query);