MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB $graphLookup obtient des enfants à tous les niveaux - résultat imbriqué

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".