Database

[{"id":"uniqueId","ver":0,"firstName":"Rack's","lastName":"Jackon","gender":"man","age":24,"address":{"streetAddress":"126","city":"San Jone","state":"CA","postalCode":"394221"},"phoneNumbers":[{"type":"home","number":"7383627627"}]},{"id":"uniqueId","ver":1,"firstName":"Rack's","lastName":"Mathew","gender":"man","age":28,"address":{"streetAddress":"126","city":"San Jone","state":"CA","postalCode":"394221"},"phoneNumbers":[{"type":"Work","number":"7383627888"}]}]

Query

db.collection.aggregate([{"$match":{"id":"uniqueId","ver":0}},{"$lookup":{"from":"collection","localField":"id","foreignField":"id",let:{oldVer:"$ver"},pipeline:[{"$match":{$expr:{$ne:["$ver","$$oldVer"]}}},{$sort:{ver:-1}},{$limit:1}],"as":"newVersion"}},{"$unwind":"$newVersion"},{"$project":{old:{"$objectToArray":"$$ROOT"},new:{"$objectToArray":"$newVersion"}}},{"$project":{diff:{"$filter":{"input":{"$setDifference":["$old","$new"]},"as":"diffEntry","cond":{$not:{$in:["$$diffEntry.k",["newVersion","ver","_id"]]}}}}}}])

Result