У меня есть две разные коллекции (пример ниже) методы & items . На данный момент я использую предварительный запрос агрегирования 3.6 для $lookup
:
MongoPlayground Пример
{
$lookup: {
from: "items",
localField: "reagents._id",
foreignField: "_id",
as: "reagent_items"
}
}
Проблема в том, что если я использую его Я скучаю по полю quantity
(из methods.reagents
врезано) на этапе $lookup
из оригинальной коллекции. Сейчас я возвращаю quantity
сразу после lookup
, но, как я слышал, Mon go ввел из 3.6 новый синтаксис для lookup
запросов, поэтому вопрос:
Можно ли решить мою проблему для получения следующих результатов:
{
"_id": 1,
"name": "Test",
"reagent_items": [ // <= the exact schema of what I need after lookup
{
"_id": 1,
"name": "ItemOne",
"other": "field",
"quantity": 2 //quantity field from original {array of objects} after lookup
},
{
"_id": 2,
"name": "ItemTwo",
"other": "field",
"quantity": 4 //quantity field from original {array of objects} after lookup
}
],
"reagents": [ //original reagents field here just for example, we could remove it
{
"_id": 1,
"quantity": 2
},
{
"_id": 2,
"quantity": 4
}
]
}
методы
{
"_id": 1,
"name": "Test",
"reagents": [
{
_id: 1,
quantity: 2
},
{
_id: 2,
quantity: 4
}
]
}
элементы
{
"_id": 1,
"name": "ItemOne",
"other": "field"
},
{
"_id": 2,
"name": "ItemTwo",
"other": "field"
}