sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $graphLookup dostat děti všech úrovní hluboko - vnořený výsledek

Ve vnořeném formátu bohužel nelze získat plnou hloubku. Použití pohledu je řešení, které vám umožní tuto operaci provést, ale budete muset vytvořit nový pohled pro každou úroveň vložení, kterou potřebujete. Místo toho bych zvážil provedení vyhledávání grafů bez poskytnutí hloubky, počínaje kořenovou úrovní, načtení celé hierarchie v jediném dotazu před výpočtem stromu na úrovni aplikace.

To by vypadalo nějak takto:

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

To by vám mělo umožnit načíst celou hierarchii najednou, takže dále musíte vypočítat strom ve vaší aplikaci z informací, které budete mít v poli "children".



  1. Laravel 5.2 Mongo MonogDB Nepodařilo se analyzovat URI MongoDB

  2. jak se mohu připojit ke vzdálenému mongo serveru z terminálu Mac OS

  3. Mongodb:operátor $in vs mnoho jednotlivých dotazů

  4. Nodejs Mongoose renderuje dva modely z kolekcí