English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
As expressões regulares são frequentemente usadas em todos os idiomas para procurar padrões ou palavras em qualquer string. O MongoDB também usa o operador $regex para fornecer funcionalidades de correspondência de padrão de string com expressões regulares. O MongoDB usa PCRE (Perl Compatible Regular Expressions) como linguagem de expressão regular.
Diferente da pesquisa de texto, não precisamos de configuração ou comando adicional para usar expressões regulares.
supondo que já estejamos no banco de dados chamado posts um documento foi inserido no banco de dados, conforme abaixo
>db.posts.insert( { "post_text": "aprecie os artigos mongodb no w3codebox", "tags": [ "mongodb", "w3codebox" ] } WriteResult({ "nInserted": 1 })
a consulta regex busca strings que contêm a string w3todos os posts do codebox–
>db.posts.find({post_text:{$regex:"w3codebox"}).pretty(){ "_id": ObjectId("5dd7ce28f1dd4583e7103fe0"), "post_text": "aprecie os artigos mongodb no w3codebox", "tags": [ "mongodb", "w3codebox" ] } { "_id": ObjectId("5dd7d111f1dd4583e7103fe2") "post_text": "aprecie os artigos mongodb no w3codebox", "tags": [ "mongodb", "w3codebox" ] } >
A mesma consulta pode ser escrita-
>db.posts.find({post_text:/w3codebox/})
Para que a pesquisa não distinga maiúsculas e minúsculas, usamos$options
parâmetro com valor$i
A seguinte instrução buscará strings com a palavraw3codebox
sem considerar maiúsculas e minúsculas-
>db.posts.find({post_text:{$regex:"w3codebox", $options:"$i"})
um dos resultados da consulta é o seguinte documento, que contémw3codebox
palavras em diferentes contextos-
{ "_id": ObjectId("53493d37d852429c10000004") "post_text": "olá! este é meu post no w3codebox", "tags" : [ "w3codebox" ] }
Também podemos usar o conceito de expressão regular em campos de array. Quando implementamos a função de tag, isso é especialmente importante. Portanto, se você quiser buscar todas as palavras com tags que começam com a palavra tutorial (tutorial ou tutorialpoint ou tutorialphp), você pode usar o seguinte código-
>db.posts.find({tags:{$regex:"tutorial"}})
Se o campo do documento forindexado
A consulta usará o valor do índice para coincidir com a expressão regular. Em comparação com a varredura de expressão regular em todo o conjunto, isso torna a pesquisa muito rápida.
Se a expressão regular regex forexpressão de prefixo
Então, todos os itens correspondentes começarão com algum caractere de string. Por exemplo, se a expressão regular regex for^tut
Então, a consulta deve buscar apenas aqueles strings que começam comtut
.