Объединение вложенных структур
идея такова: есть список уроков
{
"_id": {
"$oid": "615306ebf1b59f75e1eeae01"
},
"index": 1,
"number": "1",
"title": "***Заголовок1***",
"units": [{
"$oid": "6155a0d3f1b59f75e1eeae3c"
}, {
"$oid": "6155b7e6f1b59f75e1eeae5a"
}]
}
{
"_id": {
"$oid": "61547ca9f1b59f75e1eeae1a"
},
"index": 2,
"number": "2",
"title": "***Заголовок2***",
"units": [{
"$oid": "6155bb54f1b59f75e1eeae62"
}]
}
...
и есть список групп:
{
"_id": {
"$oid": "610bb2e8f21c6bdd28ed86ae"
},
"title": "1.17.21",
"lessons": [{
"_id": {
"$oid": "615306ebf1b59f75e1eeae01"
},
"open_date": {
"$date": "2021-05-09T21:00:00.000Z"
},
"title": "new title",
"units": [{
"id": {
"$oid": "615c4edbf1b59f75e1eeaefc"
}
}]
}, {
"_id": {
"$oid": "61547ca9f1b59f75e1eeae1a"
},
"open_date": {
"$date": "2021-06-09T21:00:00.000Z"
}
}]
},
...
в списке групп, в каждом объекте есть массив lessons в котором ссылка на урок и дата открытия кроме этого в объекте lesson есть массив units, это массив блоков в уроке в итоге есть базовый урок есть группа с уроками и похожей структурой, дополняющей и изменяющей базовый урок
необходимо наложить на структуру базового урока который вставляется по id (groups.lessons._id) информацию из структуры groups.lessons, которая может дополнять или изменять базовый урок
{
"_id": {
"$oid": "610bb2e8f21c6bdd28ed86ae"
},
"title": "1.17.21",
"lessons": [{
"_id": {
"$oid": "615306ebf1b59f75e1eeae01"
},
"open_date": {
"$date": "2021-05-09T21:00:00.000Z"
},
"index": 1,
"number": "1",
"title": "new title",
"units": [{
"id": {
"$oid": "615c4edbf1b59f75e1eeaefc"
}
}, {
"id": {
"$oid": "6155a0d3f1b59f75e1eeae3c"
}
}, {
"id": {
"$oid": "6155b7e6f1b59f75e1eeae5a"
}
}]
}, {
"_id": {
"$oid": "61547ca9f1b59f75e1eeae1a"
},
"open_date": {
"$date": "2021-06-09T21:00:00.000Z"
}
}]
},
...
изменился title и добавилось 2 объекта в units, далее в units может быть другой массив units и неплохо на них тоже наложить маску
получается это что-то вроде наследования или прототипов в js
вопрос, как это реализовать через Aggregations Pipelines?