2015-08-14 2 views
0

Есть ли способ, чтобы получить количество на общее число дорожек, найденных из allShortestPaths в запросах типаNeo4j: Cypher подсчитывает все пути, найденные от allShortestPaths?

Match (n:Person{personid:123}), (m:Person{personid:456}), p =allShortestPaths(n-[r*1..6]-m) with reduce(weight = 0, rel in rels(p) | weight + rel.weight) AS weight, n, m,p return n, m, p,weight order by weight limit 25 

ответ

3

Вот один из способов (путем сбора пути, получая длину коллекции, а затем разматывания сбор обратно в строки пути).

MATCH (n:Person { personid:123 }),(m:Person { personid:456 }), p =allShortestPaths(n-[r*1..6]-m) 
WITH n, m, COLLECT(p) AS paths 
WITH n, m, paths, LENGTH(paths) AS totalPaths 
UNWIND paths AS p 
RETURN n, m, totalPaths, p, reduce(weight = 0, rel IN rels(p)| weight + rel.weight) AS weight 
ORDER BY weight 
LIMIT 25 
Смежные вопросы