具有 Parent References 的 Model 树结构

在本页面

概观

MongoDB 中的数据具有灵活的 schema。 集合不强制执行文献结构。影响 model 数据的方式的决策会影响 application performance 和数据库容量。有关 MongoDB 中数据建模的完整高级 level 概述,请参阅数据建模概念

本文档描述了一个数据 model,它通过将references存储在 children 节点中的“parent”节点来描述 MongoDB 文档中的 tree-like 结构。

图案

Parent References pattern stores 存储文档中的每个树节点;除了树节点之外,文档存储节点的 parent 的 id。

考虑以下类别层次结构:

用于 sample 类别层次结构的树数据 model。

以下 example 使用 Parent References 对树进行建模,将 reference 存储到字段中的 parent 类别:

db.categories.insert( { _id: "MongoDB", parent: "Databases" } )
db.categories.insert( { _id: "dbm", parent: "Databases" } )
db.categories.insert( { _id: "Databases", parent: "Programming" } )
db.categories.insert( { _id: "Languages", parent: "Programming" } )
db.categories.insert( { _id: "Programming", parent: "Books" } )
db.categories.insert( { _id: "Books", parent: null } )
  • 检索节点的 parent 的查询快速而直接:
db.categories.findOne( { _id: "MongoDB" } ).parent
  • 您可以在字段parent上创建索引以启用 parent 节点的快速搜索:
db.categories.createIndex( { parent: 1 } )
  • 您可以通过parent字段查询以查找其直接的 children 节点:
db.categories.find( { parent: "Databases" } )