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

MongoDBのコレクションの再帰検索

    MongoDB 3.4以降、これはAggregationFrameworkを使用して実行できます。

    パイプラインの最初の最も重要な段階は、 $graphLookup ステージ。 $graphLookup 「親」フィールドと「名前」フィールドを再帰的に照合できます。その結果、各「名前」の祖先を取得します。

    パイプラインの次の段階は、 $matchです。 興味のある「名前」を選択するだけのステージ。

    最終段階は、 $addFieldsです。 または $project $map 配列演算子。

    もちろん、 $reverseArrayを使用します 演算子私たちは配列を逆にします 期待される結果を得るために。

    db.collection.aggregate(
        [ 
            { "$graphLookup": { 
                "from": "collection", 
                "startWith": "$parent", 
                "connectFromField": "parent", 
                "connectToField": "name", 
                "as": "ancestors"
            }}, 
            { "$match": { "name": "D" } }, 
            { "$addFields": { 
                "ancestors": { 
                    "$reverseArray": { 
                        "$map": { 
                            "input": "$ancestors", 
                            "as": "t", 
                            "in": { "name": "$$t.name" }
                        } 
                    } 
                }
            }}
        ]
    )
    


    1. 参照モデルのフィールドごとのモデルに対するマングースのネストされたクエリ

    2. インデックスが機能していないことを確認します-MongoDB

    3. MongoDBからjadeにオブジェクトを送信するにはどうすればよいですか?

    4. マングースのidと_idの違いは何ですか?