Database
[{"collection":"friendshipsView","count":5,"content":{"user1":{"type":"enum","values":["A","B","A","D","E"]},"user2":{"type":"enum","values":["B","C","D","E","C"]},"areFriends":{"type":"enum","values":[true,true,true,true,true]}},"indexes":[{"name":"ix","key":{"user1":1,"user2":1}}]}]
Query
db.friendshipsView.aggregate([{$match:{user1:"A"}},{$graphLookup:{from:"spots",startWith:"$user1",connectFromField:"user2",connectToField:"user1",as:"friendshipsViewLookup",depthField:"degree",maxDepth:2}},{$unwind:{path:"$friendshipsViewLookup",preserveNullAndEmptyArrays:true}},{$match:{"friendshipsViewLookup.user2":"C"}},{$project:{user1:1,user2:"$friendshipsViewLookup.user2",degree:{$add:["$friendshipsViewLookup.degree",1]}}},{$group:{_id:{user1:"$user1",user2:"$user2"},minDegree:{$min:"$degree"}}},{$project:{user1:"$_id.user1",user2:"$_id.user2",degree:"$minDegree"}}]).explain("executionStats")