下面是示例文档,如何将isCreated
值更新为true,例如等级为4,部分为C
{
"_id" : NumberLong(1),
"branch" : "Mogappair",
"mode" : "CBSE",
"grades" : "12",
"email" : "[email protected]",
"adminUser" : "[email protected]",
"phoneNumber" : "12135465658",
"address" : {
"address1" : "address12",
"address2" : "address12",
"street" : "street",
"area" : "area",
"city" : "city",
"pincode" : "edited",
"state" : "TN",
"lastModified" : "5/6/20 7:58 AM"
},
"divisionProvided" : [
"HIGHER SECONDARY",
"KINDERGARTEN",
"PRIMARY"
],
"availableGradesAndSections" : [
{
"division" : "HIGHER SECONDARY",
"divisionGrade" : [
{
"grade" : "9",
"section" : [
{
"section" : "B",
"isCreated" : true
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "7",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "8",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "6",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "10",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
}
]
},
{
"division" : "KINDERGARTEN",
"divisionGrade" : [
{
"grade" : "L.K.G",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
}
]
},
{
"grade" : "U.K.G",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
}
]
}
]
},
{
"division" : "PRIMARY",
"divisionGrade" : [
{
"grade" : "2",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "D",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "4",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "D",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "1",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "D",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "3",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "D",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
},
{
"grade" : "5",
"section" : [
{
"section" : "B",
"isCreated" : false
},
{
"section" : "A",
"isCreated" : false
},
{
"section" : "D",
"isCreated" : false
},
{
"section" : "C",
"isCreated" : false
}
]
}
]
}
],
"onboardingComplete" : true,
"lastModified" : "5/6/20 7:58 AM",
"_class" : "com.institution.model.Institution"
}
我们可以使用array update operators
db.collection.updateOne(
{ _id: NumberLong(1) },
{ $set:
{ 'availableGradesAndSections.$[].divisionGrade.$[divGrade].section.$[sec].isCreated': true }
},
{ arrayFilters: [{ 'divGrade.grade': '4' }, { 'sec.section': 'C' }]
})
第一个$[]
,用于更新第一个数组availableGradesAndSections
中的所有项目,该数组上没有条件,这就是为什么我们使用$[]
$[grade]
引用第二个数组divisionGrade
,其条件在arrayFilters 'divGrade.grade': 4
中,divGrade
是divisionGrade
数组内的对象
与$[sec]
中的相同
希望有帮助