#mongodb #nosql #aggregation-framework
Вопрос:
Есть ли запрос агрегации, доступный для преобразования следующего: после раскрутки я планирую изменить ключ на основе значения внутри каждого объекта и добавить его тоже имеет—(тип)
{
"rows": [
{
"type": "aaa",
"values": [
1,
2,
3
]
},
{
"type": "bbb",
"values": [
4,
5,
6
]
}
]
}
Для
{
"hasaaa": {
"type": "aaa",
"values": [
1,
2,
3
]
},
"hasbbb": {
"type": "bbb",
"values": [
4,
5,
6
]
}
}
Ответ №1:
$map
для повторения циклаrows
массива$concat
чтобы подготовить пользовательскую строку ключа- вернуть ключ-значение с карты
$arrayToObject
преобразование массива ключ-значение в объект
db.collection.aggregate([
{
$project: {
rows: {
$arrayToObject: {
$map: {
input: "$rows",
in: {
k: { $concat: ["has", "$this.type"] },
v: "$this"
}
}
}
}
}
}
])