Malheureusement, vous ne pouvez pas obtenir toute la profondeur dans un format imbriqué. L'utilisation d'une vue est une solution de contournement qui vous permet d'effectuer cette opération, mais vous devez créer une nouvelle vue pour chaque niveau d'intégration dont vous avez besoin. récupérer toute la hiérarchie en une seule requête, avant de calculer l'arbre au niveau de l'application.
Cela ressemblerait à quelque chose comme ceci :
db.node.aggregate([
{ $match: {
parentId: null
}},
{ $graphLookup: {
from: "node",
startWith: "$nodeId",
connectFromField: "nodeId",
connectToField: "parentId",
depthField: "depth",
as: "children"
}}
]);
Cela devrait vous permettre de récupérer toute la hiérarchie en une seule fois, donc ensuite, vous devez calculer l'arbre dans votre application, à partir des informations que vous aurez dans le tableau "enfants".