Could you kindly tell me if it is normal that modifying an embedded document changes its _id; or am I doing something wrong? I am assuming it is because updating the embedded document effectively replaces the original one?
I see. So you probably defined sub-schema model for the recipient so when you use $set the whole new document of Recipient model is created, and that new document get it’s own _id.
Try not to set the whole recipient sub-property, but only the fields that you really want.