위와 같은 트리 구조를 표현해야 한다면, 자체적인 해결책을 고안해야한다.

이러한 계층 구조의 경우, '해당 노드의 부모에 대한 참조'로 풀수 있다. 이런 역정규화로 인해 업데이트는 좀 복잡해 지지만 읽기는 상대적으로 간단해진다.

하지만, 수백개의 자식 노드와 중첩이 복잡해지고 데이터가 많아진다면 부모에 대한 참조 방식으로는 한계가 있다. 이런 경우 사용 가능한 방법이 구체화된 경로 (materialized path) 다.

이 패턴은 각 노드에 path 라는 필드를 가지고 있어서, 이 필드에 각 노드의 부모 ID를 덧붙여서 경로를 만들어서 저장한다.

/*
   post-1의 댓글:
   |-- 1
       |-- 2
           |-- 3
 */
{
	_id: ObjectId("1"),
	post_id: ObjectId("post-1"),
	path: null,
	body: "first comment"
}
{
	_id: ObjectId("2"),
	post_id: ObjectId("post-1"),
	path: "1",
	body: "first-second comment"
}
{
	_id: ObjectId("3"),
	post_id: ObjectId("post-1"),
	path: "1:2",
	body: "first-second-third comment"
}