问题
I am trying to update property name by using aggregation. Current document
[
{
_id: 5,
payLoad: {
grades: [
{
grade_: 80,
mean: 75
},
{
grade_: 90,
mean: 80
}
]
}
}
]
expected document renaming grade_
to grade
[
{
_id: 5,
payLoad: {
grades: [
{
grade: 80,
mean: 75
},
{
grade: 90,
mean: 80
}
]
}
}
]
To achieve this I am trying to map the aggregation
db.collection.aggregate([
{
$addFields: {
payLoad: {
grades: {
$map: {
input: "$grades",
as: "grade",
in: {
grade: "$$grade.grade_",
mean: "$$grade.mean"
}
}
}
}
}
}
])
This is not working. Not sure this mapping is right
payLoad: {
grades: {
Also tried mapping like payLoad.grades
回答1:
This should work.
{
$addFields: {
"payLoad.grades": {
$map: {
input: "$payLoad.grades",
as: "grade",
in: {
grade: "$$grade.grade_",
mean: "$$grade.mean"
}
}
}
}
}
来源:https://stackoverflow.com/questions/61873974/mongodb-map-nested-array-in-aggregate-function