Neo4j比较关系属性

时间:2016-02-24 14:03:45

标签: properties neo4j cypher relationships

我需要在r1和r2的关系属性上进行可选匹配。

r1是n层深,所以我得到错误:

  

"类型不匹配:预期的地图,节点或关系但是   收集"

MATCH (a:node{x:”foo”} )-[r1:sub*]->(b)-[r2:inst]->(c) 
USING INDEX a:node(x) 
WHERE r1.value = v2.value
RETURN b,r2,c

当我不知道前面的价值时,如何将r1.value与r2.value进行比较?

谢谢!

2 个答案:

答案 0 :(得分:1)

MATCH (a:node{x:"foo"})-[r1:sub*]->(b)-[r2:inst]->(c)
USING INDEX a:node(x)
UNWIND r1 as r
WITH b, r2, c, r
WHERE r.value = r2.value
RETURN b,r2,c

答案 1 :(得分:1)

我想这就是你要找的东西:

MATCH (a:node{x:”foo”} )-[r1:sub*]->(b)-[r2:inst]->(c) 
USING INDEX a:node(x) 
WHERE last(r1).value = v2.value
RETURN b,r2,c

说明:r1是集合。这完全合乎逻辑,因为你指定了一个任意长度。

因此,如果您需要将此链中的最后关系与某些特定关系进行比较,则可以使用last函数。