Database
db={"nodes":[{name:"A"},{name:"B"},{name:"C"}],"links":[{src:"A",dst:"B",value:25},{src:"A",dst:"C",value:3},{src:"B",dst:"C",value:19}]}
Query
db.nodes.aggregate([{"$lookup":{"from":"links",let:{name:"$name"},pipeline:[{$match:{$expr:{$or:[{$eq:["$$name","$src"]},{$eq:["$$name","$dst"]}]}}}],"as":"linksLookup"}},{"$project":{name:1,recv:{"$reduce":{"input":"$linksLookup","initialValue":0,"in":{"$add":["$$value",{"$cond":{"if":{$eq:["$$this.dst","$name"]},"then":"$$this.value","else":0}}]}}},sent:{"$reduce":{"input":"$linksLookup","initialValue":0,"in":{"$add":["$$value",{"$cond":{"if":{$eq:["$$this.src","$name"]},"then":"$$this.value","else":0}}]}}}}}])