Database
[{"_id":"631337640754675725","characters":[{"name":"Druuwu","scores":[{"date":"2023-09-03","score":100},{"date":"2023-09-03","score":1000},{"date":"2023-09-03","score":101},{"date":"2023-09-03","score":102}]}]}]
Query
db.collection.aggregate([{$match:{"_id":"631337640754675725","characters.name":"Druuwu"}},{"$unwind":"$characters"},{/** update the scores array first if matched*/$set:{"characters.scores":{"$map":{"input":"$characters.scores","as":"s","in":{"$cond":{"if":{$eq:["2023-09-03","$$s.date"]},"then":{"date":"2023-09-03","score":-1},"else":"$$s"}}}}}},{/** append the element if not already updated*/$set:{"characters.scores":{"$cond":{"if":{$in:[{"date":"2023-09-03","score":-1},"$characters.scores"]},"then":"$characters.scores","else":{"$concatArrays":["$characters.scores",[{"date":"2023-09-03","score":-1}]]}}}}},/** regroup unwinded characters documents*/{"$group":{"_id":"$_id","characters":{"$push":"$characters"}}},{"$merge":{"into":"collection","on":"_id"}}])