Database

[{_id:1,message:"text1"},{_id:2,message:"text2",reactions:[{_id:autoGen1,user:'bob',reaction:'πŸ‘'},{_id:autoGen2,user:'bob',reaction:'πŸ‘Ž'}{_id:autoGen3,user:'meg',reaction:'😡'}]}]

Query

/** Successfully removes good reaction*db.collection.update({* _id: 2*},*{* $pull: {* "reactions": {* "user": "bob",* "reaction": "good"* }* }*})*/db.collection.update({_id:2},[{$set:{reactions:{$cond:[{$in:[{reactions:{$elemMatch:{user:"bob",reaction:"good"}}},"$reactions"]},"1","2"]}}}])

Result