Я думал, проще всего было бы плоский список:Каков наиболее эффективный способ хранения структуры данных дерева в MongoDB?
{
id: ObjectId()
parentId: ObjectId()
value: ‘foo’,
}
Только одна большая коллекция. Чтобы найти дочерние узлы узла, просто выполните поиск по списку и найдите все экземпляры, где parentId равен текущему идентификатору узла. Индексы на id/parentId.
Это может быть быстрее для записи, но чтение может стать довольно ужасным. И у нас будет намного больше чтений, чем пишет!
MongoDB есть своего рода встроенный в структуру данных дерева: https://docs.mongodb.com/manual/applications/data-models-tree-structures/
Но мне интересно, как это отличается от плоского списка, как тот, который я предложил.
Это было бы не так уж плохо. Но каждый раз, когда вам нужно было найти детей узла, вам нужно было бы посмотреть одну и ту же коллекцию и перечитать ее. Худший случай, я думаю, это log (n) время, чтобы прочитать целую вещь с индексом на ней. –
@AlexanderMills да, но они очень быстрые из-за размера ведер. Я обновил свой ответ. – Lucas