使用父引用对树结构进行建模
Overview
本页介绍了一种数据模型,该模型通过在子节点中存储对“父”节点的引用来描述MongoDB文档中的树状结构。
模式
父项引用模式将每个树节点存储在文档中;除了树节点之外,该文档还存储节点父项的 ID。
以以下类别层次结构为例:
以下示例使用父引用对树进行建模,并将对父类别的引用存储在字段 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" } ) 要检索子树,请参阅
$graphLookup
。