$graphLookup (Busca em Grafo)

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

$graphLookup (Busca em Grafo)

$graphLookup realiza buscas recursivas em uma coleção, emulando a travessia de grafos: a partir dos valores de connectFromField, ele combina recursivamente com connectToField até maxDepth ou até não restarem correspondências, armazenando os resultados em as. Ideal para organogramas, árvores de categorias e contagem de saltos. Ao contrário de $lookup, ele recursa em profundidade arbitrária.

CategoriaAvançado e Diagnóstico
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $graphLookup: { from: "<collection>", startWith: <expression>, connectFromField: "<field>", connectToField: "<field>", as: "<outputField>", maxDepth: <number>, depthField: "<depthField>" } }

⚙️ Parâmetros

fromColeção de destino para pesquisas recursivas.
startWithExpressão para o valor que inicia a recursão.
connectFromFieldCampo no documento atual que contém o valor correspondente.
connectToFieldCampo na coleção de destino que é correspondido.
asNome do campo que recebe os resultados da recursão.
maxDepthProfundidade máxima de recursão; ilimitada quando omitida.

Retorno:Cada documento acrescido de uma matriz de resultados de recursão

▶ Exemplo

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

// $graphLookup: monta a cadeia de subordinação por funcionário
db.employees.aggregate([
  { $graphLookup: {
    from: 'employees',
    startWith: '$reportsTo',
    connectFromField: 'reportsTo',
    connectToField: 'name',
    as: 'chain'
  } }
])

Saída:

// Cada documento de funcionário ganha um array chain de gerentes

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QQual é a diferença entre $graphLookup e $lookup?
A$lookup faz uma junção de um nível; $graphLookup recursa por muitos níveis.
QA recursão pode entrar em loop infinito?
AEla recursa até não restarem correspondências; limite com maxDepth.
QO resultado inclui o próprio documento?
ANão. startWith é a semente; os resultados são outros documentos que correspondem a ela.
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%