sql >> データベース >  >> NoSQL >> MongoDB

MongoDB $ graphLookupは、すべてのレベルの子を深く取得します-ネストされた結果

    残念ながら、ネストされた形式で完全な深さを取得することはできません。ビューの使用はその操作を実行できる回避策ですが、必要な埋め込みレベルごとに新しいビューを作成する必要があります。代わりに、ルートレベルから始めて、深さを指定せずにgraphLookupを実行することを検討します。アプリケーションレベルでツリーを計算する前に、1つのクエリですべての階層をフェッチします。

    これは次のようになります:

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

    これにより、階層全体を一度にフェッチできるようになるはずです。次に、「children」配列にある情報から、アプリケーションのツリーを計算する必要があります。



    1. MongodbPHP-小数の整数

    2. マングース:ObjectIdへのキャストに失敗しました

    3. MongoDB3.0Javaドライバーで結果をカウントする

    4. マングースの骨材、someFieldを動的に追加することはできません:{$ not;ヌル }