带有父引用的模型树结构

在本页面

Overview

MongoDB 中的数据具有弹性模式Collections不强制执行document结构。影响数据建模方式的决策会影响应用程序性能和数据库容量。请参阅数据建模概念,以获取有关 MongoDB 中数据建模的完整概述。

本文档描述了一种数据模型,该数据模型通过将references存储到子节点中的“父”节点来描述 MongoDB 文档中的树状结构。

Pattern

“父引用”模式将每个树节点存储在文档中;除了树节点之外,文档还存储该节点的父节点的 ID。

考虑以下类别层次结构:

类别 samples 层次结构的树数据模型。

以下示例使用* Parent References *(父引用)对树进行建模,将对父类别的引用存储在字段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" } )