MATCH (s:Student{id :"studentId"})-[r:like*]->(s1:Student)
WITH s , s1 , COLLECT(SIZE(relationships(r))) as distanceList
WITH s, s1, apoc.coll.sort(distanceList) as sortedDistanceList
WITH s, s1 , sortedDistanceList[0] as closestDistance ORDER BY closestDistance DESC LIMIT 1
RETURN s1.id as farthestNodeId
Сначала попытайтесь найти все узлы ученика, связанные с данным учеником, с переменной длиной. Студент может быть связан с другим студентом несколькими способами. Таким образом, мы храним расстояния всех путей в distanceList. Затем мы можем отсортировать список, чтобы получить наименьший путь. Самый длинный из самых маленьких путей - самый дальний узел. На одном самом большом расстоянии может быть несколько узлов. Если вы хотите получить все из них, вы можете собрать все эти студенческие идентификаторы в список.