sql >> Database >  >> NoSQL >> MongoDB

MongoDB $graphLookup krijgt kinderen op alle niveaus diep - genest resultaat

Helaas kunt u niet de volledige diepte krijgen in een genest formaat. Het gebruik van een weergave is een tijdelijke oplossing waarmee u die bewerking kunt uitvoeren, maar u zou een nieuwe weergave moeten maken voor elk niveau van inbedding dat u nodig hebt. het ophalen van de hele hiërarchie in een enkele query, voordat de boom op applicatieniveau wordt berekend.

Dit zou er ongeveer zo uitzien:

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

Hiermee zou u de hele hiërarchie in één keer moeten ophalen, dus vervolgens moet u de boom in uw toepassing berekenen op basis van de informatie die u in de "children" -array zult hebben.



  1. Hoe configureer ik JedisConnectionFactory om SSL te gebruiken, zodat ik de fout niet krijg:JedisDataException:ERR niet-versleutelde verbinding is verboden?

  2. Multi-aggregatie gebruiken met MongoDB

  3. Locatiegegevens opslaan in Mongodb-document

  4. mongodb java-stuurprogramma - onbewerkte opdracht?