Предположим, что каждый документ в коллекции nodes
имеет следующие поля:
_id
, name
, nestingLevel
, horizontalIndex
, createdAt
, updatedAt
, parentDocumentId
, namespace
, nestingLevelCode
;
_id
- это UUID версии 3, который использует пространство имен.
horizontalIndex
- это строка или число, уникальное для всех дочерних элементов узла.Я хочу, чтобы он был коротким (например, пара букв или цифра), чтобы его можно было передать детям и далее сформировать отношение предка-потомка, которое равно nestingLevelCode
.
Например, nestingLevelCode
может выглядеть примерно так: a.b.c.a
означает, что текущий узел является потомком узлов a, b, c и a.
Эти данные длинны с nestingLevel
, horizontalIndex
и namespace
(который является uuid v3) будет достаточно, чтобы определить отношения предок-потомок между двумя узлами без обхода дерева.
Единственная проблема здесь - правильно генерировать horizontalIndex
.Единственный способ, которым он может быть сгенерирован правильно, - это вставка базы данных, чтобы избежать дублирования, но я не уверен, как это сделать