MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como executar a pesquisa curinga no MongoDB usando Java


Você pode fazer uma Expressão regular match em campos no Mongo, veja como você faria o primeiro de seus padrões:
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);

No entanto, tenha cuidado, pois muitas correspondências de expressões regulares exigem uma verificação completa da tabela. Isso significa que, se você executá-los em uma coleção grande, o mecanismo terá que iterar em todos os documentos (provavelmente atingindo o disco) e verificar cada um individualmente para uma correspondência. Isso é muito mais lento do que as consultas que usam índices.

As únicas expressões regulares que atingirão um índice são as correspondências de prefixo que diferenciam maiúsculas de minúsculas. Você pode pesquisar todos os "Mon*" assim e usar um índice:
Pattern p = Pattern.compile("^Mon.*");
BasicDBObject query = new BasicDBObject("name", p);

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