Database
[{"ssn":"123-45-6789"}]
Query
db.collection.aggregate([{$set:{ssn:{"$split":["$ssn","-"]}}},{$set:{toMask:{"$slice":["$ssn",0,{"$subtract":[{$size:"$ssn"},1]}]},toKeep:[{$last:"$ssn"}]}},{"$set":{"toMask":{"$map":{"input":"$toMask","as":"token","in":{"$regexFindAll":{"input":"$$token","regex":"\\d"}}}}}},{"$set":{"toMask":{"$map":{"input":"$toMask","as":"tokens","in":{"$reduce":{"input":"$$tokens","initialValue":"","in":{"$concat":["$$value","X"]}}}}}}},{"$set":{"ssn":{"$reduce":{"input":{"$concatArrays":["$toMask","$toKeep"]},"initialValue":"","in":{"$concat":["$$value",{"$cond":[{"$eq":["$$value",""]},"","-"]},"$$this"]}}}}},{"$unset":["toKeep","toMask"]}])