Database
[{"_id":ObjectId("5c05984246a0201286d4b57a"),f:"x","_a":[{"_onlineStore":{}},{"_p":{"pid":1,"s":{"a":{"t":[{id:1,"dateP":"20200-09-20",did:"x",dst:"y",den:"z"},{id:2,"dateP":"20200-09-20"}]},"c":{"t":[{id:3,"dateP":"20300-09-22"},{id:4,"dateP":"20300-09-23",did:"x",dst:"y",den:"z"},{id:5,"dateP":"20300-09-23"}]}},h:"This is cleaned but it shauld not"}},{"_p":{"pid":2,"s":{"a":{"t":[{id:1,"dateP":"20200-09-20",},{id:2,"dateP":"20200-09-20"}]},"c":{"t":[{id:3,"dateP":"20300-09-22"},{id:4,"dateP":"20300-09-23",},{id:5,"dateP":"20300-09-23"}]}},h:"This is cleaned but it shauld not"}},{x:2}]}]
Query
db.collection.update({},[{"$set":{_a2:{$filter:{input:"$_a",as:"elem",cond:{"$eq":[{"$type":"$$elem._p.s"},"missing"]}}},_a:{$filter:{input:"$_a",as:"elem",cond:{"$ne":[{"$type":"$$elem._p.s"},"missing"]}}}}},{"$set":{"_a":{"$map":{"input":"$_a","as":"elem","in":{"$mergeObjects":["$$elem",{"_p":{"$mergeObjects":["$$elem._p",{s:{"$arrayToObject":{"$map":{"input":{"$objectToArray":"$$elem._p.s"},"as":"anyKey","in":{"k":"$$anyKey.k","v":{"t":{"$filter":{"input":"$$anyKey.v.t","as":"t","cond":{"$setIsSubset":[["did","dst","den"],{"$map":{"input":{"$objectToArray":"$$t"},"in":"$$this.k"}}]}}}}}}}}}]}}]}}}}},{"$set":{"_a":{"$map":{"input":"$_a","as":"elem","in":{"$mergeObjects":["$$elem",{"_p":{"$mergeObjects":["$$elem._p",{s:{"$arrayToObject":{"$filter":{"input":{"$objectToArray":"$$elem._p.s"},"as":"anyKey","cond":{$ne:["$$anyKey.v.t",[]]}}}}}]}}]}}}}},{"$set":{"_a":{"$map":{"input":"$_a","as":"elem","in":{"$mergeObjects":["$$elem",{"_p":{"$arrayToObject":{"$filter":{"input":{"$objectToArray":"$$elem._p"},"as":"anyKey",cond:{$not:{$in:["$$anyKey.v",[{}]]}}}}}}]}}}}},{$set:{_a:{"$concatArrays":["$_a2","$_a"]}}},{$unset:"_a2"}])