Database

[{_id:ObjectId("53ed7efca75ca1a5248a281a"),name:"Person 1",createdAt:ISODate("2021-01-01T01:00:00.000Z"),subject:"M1",content:"M1 content",replyTo:null,},{_id:ObjectId("53ed80bba75ca1a5248a281b"),name:"Person 2",subject:"M2 - Reply 1 to M1",content:"M2 content",createdAt:ISODate("2021-01-01T02:00:00.000Z"),replyTo:ObjectId("53ed7efca75ca1a5248a281a"),},{_id:ObjectId("53ed80bba75ca1a5248a281c"),name:"Person 3",subject:"M3 - Reply 2 to M1",content:"M3 content",createdAt:ISODate("2021-01-01T03:00:00.000Z"),replyTo:ObjectId("53ed7efca75ca1a5248a281a"),},{_id:ObjectId("53ed80bba75ca1a5248a281d"),name:"Person 4",subject:"M4",content:"M4 content",createdAt:ISODate("2021-01-01T02:30:00.000Z"),replyTo:null,},]

Query

db.collection.aggregate([{$match:{replyTo:null}},{"$graphLookup":{"from":"collection","startWith":"$_id","connectFromField":"_id","connectToField":"replyTo","as":"children"}},{$addFields:{latest:{$cond:[{$eq:[{$size:"$children"},0]},"$$ROOT",{$last:"$children"}]}}}])

Result