返回neo4j路径上的关系属性?

时间:2017-06-05 03:07:00

标签: neo4j cypher

我需要从返回的下一个函数列表中获取 relationship 的属性总和

MATCH path=((house:Building {country: 'usa'})-[*]-(shelf:Building {country: 'mexico'}))
RETURN path;

关系可以有不同的名称,但属性具有相同的键(和不同的值),例如:

MERGE (house)-[:NAME1{num: '5'}]->(cabin)
MERGE (cabin)-[:NAME2{num: '10'}]->(shop)
MERGE (shop)-[:NAME1{num: '5'}]->(foo)
MERGE (foo)-[:NAME3{num: '30'}]->(shelf)

我需要一个查询,应用之前的要求,返回所有关系属性的总和。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用REDUCE function计算总数:

MATCH path=((house:Building {country: 'usa'})-[rels*]-(shelf:Building {country: 'mexico'}))
RETURN path, REDUCE(s = 0, r IN rels | s + TOINT(r.num)) AS total;

注意:理想情况下,您应该为num属性(而不是字符串)存储整数值,这样您就不必为每次将所有字符串值转换为整数而产生性能损失你需要使用数值。执行此操作后,您可以删除对TOINT功能的调用。