Latest web development tutorials

MongoDB regex

As expressões regulares são usados ​​para descrever a utilização de uma única cadeia de caracteres, de acordo com uma série de regras de jogo cadeia sintáctica.

Muitas linguagens de programação suportam o uso de expressões regulares para as operações de cadeia.

MongoDB usa operador $ regex para definir a cadeia de expressões regulares.

MongoDB usa PCRE (expressão regular Perl Compatible) como uma linguagem de expressão regular.

Ao contrário de pesquisa de texto completo, usamos uma expressão regular não precisa fazer nenhuma configuração.

Considere a seguinte estrutura conjunto de documentos de mensagens, o documento contém o conteúdo do artigo e no rótulo:

{
   "post_text": "enjoy the mongodb articles on tutorialspoint",
   "tags": [
      "mongodb",
      "tutorialspoint"
   ]
}

Usando expressões regulares

Os comandos a seguir usar expressões regulares para encontrar artigo contém cordas w3cschool.cc:

>db.posts.find({post_text:{$regex:"w3cschool.cc"}})

A consulta acima também pode ser escrita como:

>db.posts.find({post_text:/w3cschool.cc/})

expressões regulares insensíveis ao caso

Se você precisar recuperar um case-insensitive, podemos definir as opções $ como $ i.

O comando a seguir vai encontrar case-insensitive cadeia w3cschool.cc:

>db.posts.find({post_text:{$regex:"w3cschool.cc",$options:"$i"}})

A coleção irá retornar todos os dados que contêm a w3cschool.cc cadeia não é sensível a maiúsculas:

{
   "_id" : ObjectId("53493d37d852429c10000004"),
   "post_text" : "hey! this is my post on  W3Cschool.cc", 
   "tags" : [ "tutorialspoint" ]
} 

elementos da matriz usando expressões regulares

Podemos também usar expressões regulares no campo de matriz para encontrar conteúdo. Isso é útil na realização do rótulo, se você precisa encontrar o rótulo contém dados (tutorial ou tutoriais ou tutorialpoint ou tutorialphp) tutorial no início, você pode usar o seguinte código:

>db.posts.find({tags:{$regex:"tutorial"}})

Otimizando consulta Expressões Regulares

  • Se o seu campo de índice de documento é definido, então o uso do índice em comparação com a expressão regular correspondente para encontrar todos os dados consultas mais rápidas.

  • Se a expressão regular é uma expressão prefixo, todos os dados correspondentes serão especificadas cadeia de prefixo para começar. Por exemplo: Se a expressão regular é ^ tut, tut consulta vai olhar para o início da cadeia.

Há o uso de expressões regulares, há dois pontos a serem observados:

As expressões regulares usando variáveis. Certifique-se de usar uma combinação de eval cadeia irá converter depois não pode ser passado diretamente para a expressão de concatenação. Caso contrário, não há nenhuma mensagem de erro, mas o resultado é vazio! Exemplos são os seguintes:

var name=eval("/" + 变量值key +"/i"); 

O seguinte é uma consulta distorcido contém palavra-chave título não é sensível a maiúsculas:

title:eval("/"+title+"/i")    // 等同于 title:{$regex:title,$Option:"$i"}