文档菜单
文档首页
/
MongoDB 手册
/ / /

使用子引用构建模型树结构

本页内容

  • 概述
  • 模式

本页描述了一个数据模型,该模型通过在父节点中存储引用来在MongoDB文档中描述树状结构。引用在父节点到子节点之间。

子引用模式将每个树节点存储在一个文档中;除了树节点外,文档还将节点子节点的id(s)存储在一个数组中。

考虑以下类别层次结构

Tree data model for a sample hierarchy of categories.

以下示例使用子引用来建模树,将节点子节点的引用存储在字段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" } )

只要不需要对子树进行操作,子引用模式就为树存储提供了一个合适的解决方案。此模式还可能为存储图形提供了合适的解决方案,其中节点可能有多个父节点。

返回

父引用

本页内容