Одна запись в коллекции – одна задача, каждая задача имеет свой 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 так?