$regexFindAll (Todas as Correspondências de Regex)

Última atualização: 2026-10-09

$regexFindAll (Todas as Correspondências de Regex)

$regexFindAll executa uma busca regex em uma string e retorna todas as correspondências como um array; cada elemento tem os campos match, idx e captures, e nenhuma correspondência resulta em um array vazio. É ideal para extrair padrões repetidos, como e-mails, links ou números. Diferente de $regexFind, ele nunca retorna null — sempre um array, então $size conta as correspondências diretamente.

CategoriaString
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $regexFindAll: { input: <expressão de string>, regex: <padrão>, options: <opções> } }

⚙️ Parâmetros

inputObrigatório; a string a pesquisar.
regexObrigatório; uma string de padrão regex compatível com Perl.
optionsSinalizadores opcionais como i, m.

Retorno:Uma matriz de documentos de correspondência; vazia quando nada corresponde; null se a entrada for null.

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $regexFindAll: extrair todos os links das postagens
db.posts.aggregate([
  { $project: { links: { $regexFindAll: { input: '$body', regex: 'https?://[a-z0-9.]+' } } } }
])

Saída:

{ "_id": 1, "links": [ { "match": "https://a.com", "idx": 10, "captures": [] }, { "match": "https://b.org", "idx": 32, "captures": [] } ] }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QO que é retornado quando nada corresponde?
AUm array vazio, não null.
QComo contar as correspondências?
AEnvolva o resultado com $size.
QQual é a diferença para $regexFind?
A$regexFind retorna a primeira correspondência (null se não houver); $regexFindAll retorna todas as correspondências.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%