Neo4j:迭代关系

时间:2016-10-10 14:08:49

标签: neo4j sum

我使用的是Neo4j 3.0.6,我想做类似的事情:

for k in keys(r):
    if k >= `2015-01`:
       sum(values(k)) as sum

我试过foreach但是它没有用。 在模型中,我关系的关键是一对日期和一个标准。这是一个例子:

<id>... 2015-01,c:500 2015-02,c:23 2015-03,c:900 2015-01,r:56

预期的结果:

sum 
923

所以,当它大于2015-01时,我希望得到标准c的总和 谢谢

1 个答案:

答案 0 :(得分:1)

MATCH (origin:AirportFR)
WHERE origin.code IN ['JFK', 'ATX']
MATCH (destination:AirportFR)
WHERE destination.code IN ['BUY', 'PUQ']
MATCH (origin) - [r] - (destination)
UNWIND [k IN KEYS(r) WHERE split(k, ',')[0] >= '2015-01' AND split(k, ',')[1] = 'c'| r[k] ] AS c_values
RETURN SUM(c_values)

SUM是一个聚合函数,需要从多行收集数据,因此您必须将所需的属性放入行中。要生成这些行,您将需要UNWIND每行的密钥的过滤列表。但如下所述,请认真考虑更改数据模型,以便不必在密钥上运行字符串分析。