sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $graphLookup obtiene niños en todos los niveles de profundidad:resultado anidado

Desafortunadamente, no puede obtener la profundidad completa en un formato anidado. El uso de una vista es una solución alternativa que le permite realizar esa operación, pero necesitaría crear una nueva vista para cada nivel de incrustación que necesite. En su lugar, consideraría realizar una búsqueda gráfica sin proporcionar una profundidad, comenzando desde el nivel raíz, obteniendo toda la jerarquía en una sola consulta, antes de calcular el árbol en el nivel de la aplicación.

Esto se vería así:

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

Esto debería permitirle obtener toda la jerarquía de una sola vez, por lo que a continuación, debe calcular el árbol en su aplicación, a partir de la información que tendrá en la matriz "hijos".