$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.
| Categoria | String |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $regexFindAll: { input: <expressão de string>, regex: <padrão>, options: <opções> } }
⚙️ Parâmetros
| input | Obrigatório; a string a pesquisar. |
|---|---|
| regex | Obrigatório; uma string de padrão regex compatível com Perl. |
| options | Sinalizadores 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
- Sem correspondência resulta em um array vazio, não null — $size funciona diretamente
- A correspondência é global; não para na primeira ocorrência
- Atenção ao desempenho em textos grandes; pré-filtre com $regexMatch se necessário
🏷️ Tags Relacionados
💡 Casos Relacionados
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.