You are viewing an offline version of MongoDB documentation. Some page features might be unavailable. To view the latest version of the page or use interactive features, visit the live page.
Model Tree Structures with Parent References
Overview
This page describes a data model that describes a tree-like structure in MongoDB documents by storing references to "parent" nodes in children nodes.
Pattern
The Parent References pattern stores each tree node in a document; in addition to the tree node, the document stores the ID of the node's parent.
Consider the following hierarchy of categories:
The following example models the tree using Parent References,
storing the reference to the parent category in the field 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 } ] )
The query to retrieve the parent of a node is fast and straightforward:
db.categories.findOne( { _id: "MongoDB" } ).parent You can create an index on the field
parent
to enable fast search by the parent node:db.categories.createIndex( { parent: 1 } ) You can query by the
parent
field to find its immediate children nodes:db.categories.find( { parent: "Databases" } ) To retrieve subtrees, see
$graphLookup
.