mongodb При присоединении коллекции выводить как отдельную запись
Есть две коллекции:
users:
[
{
_id: 1,
name: "user1"
active: "true"
},
{
_id: 2,
name: "user2",
active: true
}
]
orders:
[
{
id: 1,
status: "payment",
user_id: 1
},
{
id: 2,
status: null,
user_id: 1
}
]
При присоединении "orders" с использованием $aggregate $lookup, результат выглядит так:
[
{
_id: 1,
name: "user1",
orders: [
{
id: 1,
status: "payment",
user_id: 1
},
{
id: 2,
status: null,
user_id: 1
}
]
},
{
_id: 2,
name: "user2",
active: true,
orders: []
}
]
То есть документы orders присоединяется к документу user в виде массива
Как сделать присоединение в виде объекта и вывод user как отдельной записи ?
[
{
_id: 1,
name: "user1",
order:
{
id: 1,
status: "payment",
user_id: 1
},
},
{
_id: 1,
name: "user1",
order:
{
id: 2,
status: null,
user_id: 1
}
},
{
_id: 2,
name: "user2",
active: true,
order: null
}
]
Ответы (1 шт):
Автор решения: Алексей
→ Ссылка
Решилось всё так:
db.users.aggregate([
{ $lookup: {from: "orders", localField: "_id", foreignField: "user_id", as: "order"} },
{ $unwind: {
"path": "$order",
"preserveNullAndEmptyArrays": true
} }
])