Вот мои коллекции:
Пользователи:
{
user: xxx,
job: xxx,
order: xxxx
}
автомобили:
{
order: xxxx,
cost: yyyy
}
самолет:
{
order: xxxx,
cost: yyyy
}
страхование:
{
cost: yyyy,
terms: zzzz
}
Во-первых, я хочу объединить «пользователей» с «автомобилями» или «самолетами» на основе соответствия значения поля «заказ». После этого я объединяю результат со сбором «страхование» на основе поля «стоимость».
Итак, я хочу, чтобы результат был таким:
{ "user" : xx, ..., "order": dsad, "cars": {}, "plane": {"order": ddsa, "cost": awew} , "terms": sdada},
{ "user" : yy, ..., "order": sawe, "cars": {"order": fda, "cost": qwez}, "plane": {} , "terms": tyrw},
{ "user" : zz, ..., "order": qwez, "cars": {}, "plane": {} , "terms":{} }
Я попытался использовать db.users.aggregate () вместе с $ lookup, как показано ниже:
db.check.aggregate([
{
$lookup:
{
from: "cars",
localField: "order",
foreignField: "order",
as: "cars"
}
},
{
$unwind: {path: "$cars", preserveNullAndEmptyArrays: true}
},
{
$lookup:
{
from: "planes",
localField: "order",
foreignField: "order",
as: "planes"
}
},
{
$unwind: {path: "$planes", preserveNullAndEmptyArrays: true}
},
и это приводит к:
{ "user" : xx, ..., "order": dsad, "cars": {}, "plane": {"order": ddsa, "cost": awew}},
{ "user" : yy, ..., "order": sawe, "cars": {"order": fda, "cost": qwez}, "plane": {}},
{ "user" : zz, ..., "order": qwez, "cars": {}, "plane": {}}
но я не знаю идти дальше оттуда!