Учитывая, что у меня есть 2 коллекции .
Первая, названная origin
, имеет следующие документы (исключая _id
):
Происхождение
[
{
"Id": "1",
"Level1": [
{
"Id": "1.1",
"Level2": [
{
"Level3": {
"Id": "1.1.1",
"Name": "name 1.1.1"
}
},
{
"Level3": {
"Id": "1.1.2",
"Name": "name 1.1.2"
}
}
]
},
{
"Id": "1.2",
"Level2": [
{
"Level3": {
"Id": "1.2.1",
"Name": "name 1.2.1"
}
},
{
"Level3": {
"Id": "1.2.2",
"Name": "name 1.2.2"
}
}
]
}
]
},
{
"Id": "2",
"Level1": [
{
"Id": "2.1",
"Level2": [
{
"Level3": {
"Id": "2.1.1",
"Name": "name 2.1.1"
}
},
{
"Level3": {
"Id": "2.1.2",
"Name": "name 2.1.2"
}
}
]
},
{
"Id": "2.2",
"Level2": [
{
"Level3": {
"Id": "2.2.1",
"Name": "name 2.2.1"
}
},
{
"Level3": {
"Id": "2.2.2",
"Name": "name 2.2.2"
}
}
]
}
]
}
]
Вторая коллекция называется destination
и содержит следующие документы:
Направление
[
{
"Id": "f1",
"Level1": {
"Level2": {
"Id": "1.1.1",
"Name": "name 1.1.1"
}
}
},
{
"Id": "f2",
"Level1": {
"Level2": {
"Id": "1.1.2",
"Name": "name 1.1.2"
}
}
},
{
"Id": "f3",
"Level1": {
"Level2": {
"Id": "1.2.1",
"Name": "name 1.2.1"
}
}
},
{
"Id": "f4",
"Level1": {
"Level2": {
"Id": "1.2.2",
"Name": "name 1.2.2"
}
}
},
{
"Id": "f5",
"Level1": {
"Level2": {
"Id": "2.1.1",
"Name": "name 2.1.1"
}
}
},
{
"Id": "f6",
"Level1": {
"Level2": {
"Id": "2.1.2",
"Name": "name 2.1.2"
}
}
},
{
"Id": "f7",
"Level1": {
"Level2": {
"Id": "2.2.1",
"Name": "name 2.2.1"
}
}
},
{
"Id": "f8",
"Level1": {
"Level2": {
"Id": "2.2.2",
"Name": "name 2.2.2"
}
}
}
]
Запрос
Level1.Id = "1.1"
на origin
Logi c
Учитывая Level1.Id = "1.1"
на origin
собрание, я хочу получить список документов из destination
собрание, где:
Level1.Level2.Level3 in
origin
= Level1.Level2 in
destination
Запрос агрегации из origin
должен "собрать" все объекты Level1.Level2.Level3
(под соответствующим Level1.Id
) и использовать этот массив для идентификации документов в коллекции destination
.
Ожидаемый результат:
Результат
[
{
"Id": "f1",
"Level1": {
"Level2": {
"Id": "1.1.1",
"Name": "name 1.1.1"
}
}
},
{
"Id": "f2",
"Level1": {
"Level2": {
"Id": "1.1.2",
"Name": "name 1.1.2"
}
}
}
]
Как мне сделать sh это с запросом агрегации?