Database
[{"symbol.name":"Some name","symbol.state":"Some state","otherField":"other value"}]
Query
db.collection.update({},[{"$project":{"kv":{"$objectToArray":"$$ROOT"}}},{"$set":{"kv":{"$map":{"input":"$kv","as":"kv","in":{"$switch":{"branches":[{/** handling for symbol.name*/"case":{"$eq":["symbol.name","$$kv.k"]},"then":{k:"symbol",v:"$$kv.v"}},{/** remove fields starting by symbol.*/"case":{"$eq":[0,{"$indexOfCP":["$$kv.k","symbol."]}]},"then":"$$REMOVE"}],"default":"$$kv"}}}}}},{"$set":{/** remove null fields(i.e. fields started by symbol.)*/"kv":{"$filter":{"input":"$kv","as":"kv","cond":{"$ne":["$$kv",null]}}}}},{/** revert back to original object form*/"$replaceRoot":{"newRoot":{"$arrayToObject":"$kv"}}}],{multi:true})