使用父引用描述模型树结构
概述
本页描述了一种数据模型,通过存储子节点中对“父”节点的引用来描述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
.