как хранить корпоративную иерархию в пн go? - PullRequest
0 голосов
/ 31 марта 2020

Я плохо разбираюсь в БД документов, хочу улучшить себя. Задача: сохранить иерархию предприятия в Mon go DB.

Есть работодатели и отделы. Каждый работодатель принадлежит к определенному отделу (кстати, что если кто-то принадлежит к нескольким отделам?). Конечно, существует иерархия сотрудников: директор root. Так что у всех, кроме директора, есть непосредственный начальник (что, если у кого-то есть несколько боссов, которые не принадлежат к одной и той же ветке?)

Структура может быть изменена (скажем, не чаще, чем один раз в день) и имеет отметка времени.

Так как сохранить ее в пн go БД? Многократная коллекция? Или одна коллекция и много документов?

Все жизнеспособные идеи приветствуются.

1 Ответ

0 голосов
/ 02 апреля 2020

Храните каждого сотрудника как один документ. В этом документе хранится массив отделов и массив прямых отчетов. Микросхемы имеют массив прямых отчетов, который пуст. Индексируйте массив отчетов, чтобы запросы были эффективными.

Эта структура поддерживает несколько отделов на сотрудника и несколько менеджеров на сотрудника.

Большинство иерархий изменяются атомарно, поэтому я предложил бы применить изменения к новой коллекции, и эта коллекция заменит старую коллекцию.

Вы можете использовать оператор MongoDB $ graphLookup для запроса графика сотрудников.

...