Model Tree Structures with Parent References
MongoDB 5.0 is end of life as of October 2024. This version of the documentation is no longer
supported. To upgrade your 5.0 deployment, see the MongoDB 6.0 upgrade procedures.
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
.