親参照を持つモデルツリー構造
Overview
このページでは、子ノードに「親」ノードへの参照を保存することで、MongoDB ドキュメント内のツリーのような構造を記述するデータモデルについて説明します。
パターン
親参照パターンは、各ツリー ノードをドキュメントに保存します。ツリー ノードに加えて、ドキュメントにはノードの親の ID が保存されます。
以下のカテゴリの階層を考慮します。
次の例では、親参照を使用してツリーをモデル化し、フィールド parent
に親カテゴリへの参照を保存します。
db.categories.insertMany( [ { _id: "MongoDB", parent: "Databases" }, { _id: "dbm", parent: "Databases" }, { _id: "Databases", parent: "Programming" }, { _id: "Languages", parent: "Programming" }, { _id: "Programming", parent: "Books" }, { _id: "Books", parent: null } ] )
ノードの親を検索するクエリは高速で簡単です。
db.categories.findOne( { _id: "MongoDB" } ).parent フィールド
parent
にインデックスを作成すると、親ノードによる高速検索が可能になります。db.categories.createIndex( { parent: 1 } ) parent
フィールドでクエリを実行すると、その直下の子ノードを見つけることができます。db.categories.find( { parent: "Databases" } ) サブツリーを検索するには、
$graphLookup
を参照してください。