Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

子参照を持つモデルツリー構造

項目一覧

  • Overview
  • パターン

このページでは、親ノードから子ノードへの参照を保存することで、MongoDB ドキュメント内のツリーのような構造を記述するデータモデルについて説明します。

子参照パターンは、各ツリー ノードをドキュメントに保存します。ツリー ノードに加えて、ドキュメントはノードの子の ID を配列に保存します。

以下のカテゴリの階層を考慮します。

カテゴリのサンプル階層のツリー データモデル。

以下の例では、子参照を使用してツリーをモデル化し、ノードの子への参照をフィールド children に保存しています。

db.categories.insertMany( [
{ _id: "MongoDB", children: [] },
{ _id: "dbm", children: [] },
{ _id: "Databases", children: [ "MongoDB", "dbm" ] },
{ _id: "Languages", children: [] },
{ _id: "Programming", children: [ "Databases", "Languages" ] },
{ _id: "Books", children: [ "Programming" ] }
] )
  • ノードの直下の子を検索するクエリは高速で簡単です。

    db.categories.findOne( { _id: "Databases" } ).children
  • フィールド children にインデックスを作成すると、子ノードによる高速検索が可能になります。

    db.categories.createIndex( { children: 1 } )
  • children フィールドでノードをクエリすると、その親ノードと兄弟ノードを見つけられます。

    db.categories.find( { children: "MongoDB" } )

子参照パターンは、サブツリーに対する操作が必要ない限り、ツリー ストレージに適したソリューションを提供します。このパターンは、ノードが複数の親を持つ可能性があるグラフを保存する場合にも適したソリューションを提供できます。

戻る

親参照