Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

使用子引用对树结构进行建模

在此页面上

  • 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" } )

只要无需对子树进行操作,子引用模式就可为树存储提供一种合适的解决方案。此模式还可为存储特定图表(其中的节点可能具有多个父节点)提供合适的解决方案。

后退

父引用

在此页面上