Database

[{"city":"London","eventTime":NumberLong(1582866000),"createdTime":NumberLong(1582900145),"eventDetails":{}},{"city":"London","eventTime":NumberLong(1582866000),"createdTime":NumberLong(1582901000),"eventDetails":{}},{"city":"London","eventTime":NumberLong(1582866000),"createdTime":NumberLong(1582901500),"eventDetails":{}},{"city":"London","eventTime":NumberLong(1582867000),"createdTime":NumberLong(1582900145),"eventDetails":{}},{"city":"London","eventTime":NumberLong(1582867000),"createdTime":NumberLong(1582901000),"eventDetails":{}},{"city":"London","eventTime":NumberLong(1582867000),"createdTime":NumberLong(1582901500),"eventDetails":{}},{"city":"Paris","eventTime":NumberLong(1582866000),"createdTime":NumberLong(1582900145),"eventDetails":{}},{"city":"Paris","eventTime":NumberLong(1582866000),"createdTime":NumberLong(1582901000),"eventDetails":{}},{"city":"Paris","eventTime":NumberLong(1582866000),"createdTime":NumberLong(1582901500),"eventDetails":{}},{"city":"Paris","eventTime":NumberLong(1582867000),"createdTime":NumberLong(1582900145),"eventDetails":{}},{"city":"Paris","eventTime":NumberLong(1582867000),"createdTime":NumberLong(1582901000),"eventDetails":{}},{"city":"Paris","eventTime":NumberLong(1582867000),"createdTime":NumberLong(1582901500),"eventDetails":{}}]

Query

db.collection.aggregate([{$group:{_id:{city:"$city",eventTime:"$eventTime"},data:{$push:"$$ROOT"}}},{$addFields:{closest:{$reduce:{input:"$data",initialValue:{$arrayElemAt:["$data",0]},in:{$cond:[{$lt:[{$abs:{$subtract:["$$this.eventTime","$$this.createdTime"]}},{$abs:{$subtract:["$$value.eventTime","$$value.createdTime"]}}]},"$$this","$$value"]}}}}},{$unwind:"$closest"},{$replaceRoot:{newRoot:"$closest"}}])

Result