Таблица "пользователь":
{
"_id" : ObjectId("573b09e6322304d5e7c6256e"),
"name" : "John",
"age" : 30,
"list" : [
"userId1",
"userId2",
"userId3",
"userId2"
]
},
{
"_id" : "userId1",
"name" : "Derek",
"age" : 34
},
{
"_id" : "userId2",
"name" : "Homer",
"age" : 44
},
{
"_id" : "userId3",
"name" : "Bobby",
"age" : 12
}
Мой запрос:
db.user.aggregate(
[
{
$match: { "_id": ObjectId("573b09e6322304d5e7c6256e") }
},
{
$lookup:
{
from: "user",
localField: "list",
foreignField: "_id",
as: "listData"
}
}
]
)
Мне нужно найти одного пользователя по идентификатору с данными объединенного списка в качестве объекта идентификатора / значения:
{
"_id" : ObjectId("573b09e6322304d5e7c6256e"),
"name" : "John",
"age" : 30,
"list" : [
"userId1",
"userId2",
"userId3",
"userId2"
],
"listData" : {
"userId1": {
"_id" : "userId1",
"name" : "Derek",
"age" : 34
},
"userId2": {
"_id" : "userId2",
"name" : "Homer",
"age" : 44
},
"userId3": {
"_id" : "userId3",
"name" : "Bobby",
"age" : 12
}
]
}
Но я получил listData в виде массива:
{
"_id" : ObjectId("573b09e6322304d5e7c6256e"),
"name" : "John",
"age" : 30,
"list" : [
"userId1",
"userId2",
"userId3",
"userId2"
],
"listData" : [
{
"_id" : "userId1",
"name" : "Derek",
"age" : 34
},
{
"_id" : "userId2",
"name" : "Homer",
"age" : 44
},
{
"_id" : "userId3",
"name" : "Bobby",
"age" : 12
}
]
}
Что мне нужно изменить, чтобы получить массив как объект с ключами в качестве идентификаторов?дБ версия v4.0.2