#arrays #mongodb #aggregation-framework
#массивы #mongodb #агрегация-фреймворк
Вопрос:
У меня следующая структура документа:
{
"user_id": "102",
"roles": [{
"name": "superuser"
}, {
"name": "admin"
}, {
"name": "account_admin"
}]
}
И мне нужно перейти к следующему результату:
{
"user_id": "102290863723817866607",
"roles": [
0: "superuser",
1: "gsuite_admin",
2: "account_admin"
]
}
Я не совсем понимаю, как организовать конвейер агрегации, чтобы получить этот результат
Ответ №1:
Вы можете использовать a $project
, объединенный с a $map
, чтобы выбрать имя из объекта вашей роли:
db.collection.aggregate([
{
"$project": {
"roles": {
"$map": {
"input": "$roles",
"as": "role",
"in": "$role.name"
}
}
}
}
])