у меня есть коллекции, которые представляют собой древовидные коллекции метаданных, сайтов и геолокации, одна мета может иметь несколько сайтов, а один сайт может иметь несколько геолокаций
коллекция метаданных
{
"_id": "1",
"meta_id": 1,
"meta_name": "yankung"
}
коллекция сайтов
{
"_id": "1",
"meta_id": 1,
"site_id" :2,
"site_name": "uoop"
}
Географическая коллекция
{
"_id": "1",
"site_id": 2,
"geo_id" :3,
"geo_name": "toop"
}
Мне нужно получить такой конечный результат
{
"_id": "1",
"meta_id": 1,
"meta_name": "yankung",
"sites": [
{
"site_id": 2,
"site_name": "uoop",
"geos:": [
{
"geo_id": 3,
"geo_name": "toop"
},
{
"geo_id": 4,
"geo_name": "toop"
}
]
},
{
"site_id": 1000,
"site_name": "uoop",
"geos:": [
{
"geo_id": 5,
"geo_name": "toop"
},
{
"geo_id": 6,
"geo_name": "toop"
}
]
}
]
}
Я попытался использовать агрегационный запрос с поиском, и раскрутка смогла разделить сайты и географические объекты в виде списка, подумать о получении требуемого результата на уровне приложения, но придется перебирать каждый документ и добавлять, что увеличит временную сложность, любая помощь в том, как мне действовать?
это что я смог достичь
{
"_id": "1",
"meta_id": 1,
"meta_name": "yankung",
"sites": [
{ "site_id": 2, "site_name": "uoop"
},
{"site_id": 1000,"site_name": "uoop"
}
],
"geos:": [
{ "geo_id": 5,"geo_name": "toop"
},
{"geo_id": 6,"geo_name": "toop"
}
]
}