Model Tree Structures with Parent References
This version of the documentation is archived and no longer
supported. View the current documentation to learn how to
upgrade your version of MongoDB.
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
.