Database

[{"id":444,"name":"Server 1","portSource":1,"portTarget":7},{"id":555,"name":"Server 2","portSource":7,"portTarget":1},{"id":666,"name":"Server 3","portSource":1,"portTarget":8},{"id":777,"name":"Server 4","portSource":3,"portTarget":5},{"id":888,"name":"Server 5","portSource":5,"portTarget":3}]

Query

db.collection.aggregate([{$lookup:{from:"collection",let:{portSource:"$portSource",portTarget:"$portTarget"},pipeline:[{$match:{$expr:{$and:[{$eq:["$portTarget","$$portSource"]},{$eq:["$portSource","$$portTarget"]}]}}},{$project:{id:1,_id:0}}],as:"targetId"}},{$match:{targetId:{$ne:[]}}},{$addFields:{sourceId:"$id",targetId:{$arrayElemAt:["$targetId.id",0]}}},{$project:{id:0}}])

Result