Я пытаюсь создать проекцию, в которой я могу взять только часть элемента Array.
Возьмите этот документ в качестве модели:
{
"city_info": {
"name": "First City"
"initials": "FC"
},
"postal_codes": {
"ranges": [
{
"name": "Range 1",
"details": "More details",
"another_object": {
(...)
},
"codes": [
{"code": 1},
{"code": 2},
{"code": 3}
]
},
{
"name": "Range 2",
"details": "More details 2",
"another_object": {
(...)
}
"codes": [
{"code": 4},
{"code": 5}
]
}
]
}
}
Мой запрос будет выглядеть как {"postal_codes.ranges.codes.code": 3}
Диапазоны и коды могут иметь сотни элементов. Например, «другой_объект» - это просто заполнитель.
Ожидаемый результат будет примерно таким:
{
"city_info": {
"name": "First City"
"initials": "FC"
},
"range": {
"name": "Range 1",
"details": "More details",
"another_object": {
(...)
}
}
}
Короче говоря, мне нужно получить элемент массива, который также соответствует запросу, но не возвращайте его полностью.
Кажется, что find недостаточно мощный, мне понадобится какое-то агрегирование. Я попытался использовать совпадение, чтобы вернуть только те документы, которые соответствуют запросу, но я не знаю, как проецировать только часть массива.