It would be helpful if you share the actual use case, might be there some alternative approach available instead of creating an extra variable and removing it?
Alternative to $unset you can use the $$REMOVE operator to remove the property from any projection stage.
{ $set: { isLastReceiveTimeBack: "$$REMOVE" } }
//You can do the same in the $addFields stage
But I like to use $set this way I can see my temp. variables in intermediate results. What I do is the I put them all in a top field named _tmp. This way they are all grouped together and a single $unset remove them all.
I want to use a condition ($cond) without an else clause to update a field in case the if-condition resolves to true. If it resolves to false the field should stay untouched. Since I found no other/better way so far I store the origin value into a temp variable, execute the else clause i set the field to the stored origin value.