sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $graphLookup får børn alle niveauer dybt - indlejret resultat

Desværre kan du ikke få den fulde dybde i et indlejret format. Brug af en visning er en løsning, som lader dig udføre den handling, men du skal oprette en ny visning for hvert niveau af indlejring, du har brug for. I stedet ville jeg overveje at udføre et graphLookup uden at angive en dybde, startende fra rodniveauet, henter hele hierarkiet i en enkelt forespørgsel, før træet beregnes på applikationsniveau.

Dette ville se sådan ud:

db.node.aggregate([
    { $match: {
        parentId: null
    }},
    { $graphLookup: {
        from: "node",
        startWith: "$nodeId",
        connectFromField: "nodeId",
        connectToField: "parentId",
        depthField: "depth",
        as: "children"
    }}
]);

Dette skulle give dig mulighed for at hente hele hierarkiet på én gang, så derefter skal du beregne træet i din applikation ud fra de oplysninger, du vil have i "børn"-arrayet.



  1. Om MongoDB, hvorfor bruger vi det? MongoDBs terminologi og implementering

  2. Mongo push til array inde i array

  3. Hvordan forbinder du til et replikasæt fra en MongoDB-skal?

  4. Aggreger med antallet af underdokumenter, der matcher betingelsen og grupperingen