Database
[{"_id":ObjectId("5349b4ddd2781d08c09890f4"),"school":[{"Class":[{"Name":{"Subject":["C","A"]}}]}]},{"_id":ObjectId("5349b4ddd2781d08c09890f5"),"school":[{"Class":[{"Name":{"Subject":["B","A","C"]}}]}]},{"_id":ObjectId("5349b4ddd2781d08c09890f6"),"school":[{"Class":[{"Name":{"Subject":[]}}]}]},{"_id":ObjectId("5349b4ddd2781d08c09890f7"),"school":[{"Class":[{"Name":{"Subject":["C"]}}]}]},{"_id":ObjectId("5349b4ddd2781d08c09890f8"),"school":[{"Class":[{"Name":{"Subject":["A"]}}]}]}]
Query
db.collection.update({/** Only need to update where "C" is present*/"school.Class.Name.Subject":"C"},[{/** Recreate school taking care of "C"*/"$set":{"school":{"$map":{"input":"$school","as":"class","in":{"Class":{"$map":{"input":"$$class.Class","as":"name","in":{"Name":{"Subject":{"$setUnion":{"$map":{"input":"$$name.Name.Subject","as":"code","in":{"$cond":[{"$eq":["$$code","C"]},"B","$$code"]}}}}}}}}}}}}}],{/** Do all docs (or use updateMany, etc.)*/"multi":true})