Infelizmente, você não pode obter toda a profundidade em um formato aninhado. Usar uma visualização é uma solução alternativa que permite realizar essa operação, mas você precisaria criar uma nova visualização para cada nível de incorporação necessário. buscar toda a hierarquia em uma única consulta, antes de calcular a árvore no nível do aplicativo.
Isso se pareceria com algo assim:
db.node.aggregate([
{ $match: {
parentId: null
}},
{ $graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
depthField: "depth",
as: "children"
}}
]);
Isso deve permitir que você busque toda a hierarquia de uma só vez, então, em seguida, você precisa calcular a árvore em seu aplicativo, a partir das informações que você terá no array "filhos".