@asadon

Как правильно собрать дерево из списка задач?

Одна запись в коллекции – одна задача, каждая задача имеет свой ID и PARENT_ID номер ID основной задачи, вложенность не ограничена. Как оптимально быстро создать новую колекцию что бы запись соответствовала самой верхней задаче, дочерние были в tasks[] дочерние дочерних в своих tasks. Понятно что можно обходом и выборкой дергать каждую запись, но хочу использовать средства mongo

var cursor = db.tasks.aggregate([
	{
	    $lookup:
	    {
	        from: "tasks",
	        localField: 'ID',   
	        foreignField: 'PARENT_ID',
	        as: 'tasks'
	    }
	},
	{ $match: { 'tasks': { $not: { $size: 0 }}}},
	{ $sort: {'PARENT_ID': 1}}
]);

Вот так получаю всех родителей со списком вложенных задач, а делее обыкновенный цикл и обработка. Возможно есть более элегантное решение.
И так же до конца не понимаю как очень быстро запросом без использования циклов получить данные нужно задачи, например если она находится "глубоко"
task01-tasks[]
 task02 - tasks[]
  task04 - tasks[]
   task05
   task06
  task03

например в такой структуре получить задачу с ID 06, это только по очереди искать сначала по ID потом по tasks.ID потом по tasks.tasks.id так?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы