Neo4j / Cypher:具有关系属性过滤器

时间:2016-09-02 08:34:52

标签: neo4j cypher

我正在尝试执行查询以检索两个节点a和b之间的所有路径,其中所有路径都满足关系属性。

我在很多方面都尝试过,但我无法取得成功。

MATCH p =(o {value:“a”}) - [r *] - (x {value:“b”})其中有(r.property)和r.property =“foo”返回p < / p>

关系部分我已经改为[r * ..]和许多其他选项,但没有工作

函数shortest路径对我没有帮助,因为我不仅要求最短但有所有可能性。

有人可以帮我或告诉我查询中的错误是什么?

提前谢谢。

2 个答案:

答案 0 :(得分:5)

您正在寻找的是关于路径的关系集合的ALL谓词:

MATCH p=(o{value:"a"})-[r*]-(x{value:"b"})
WHERE ALL(x IN rels(p) WHERE x.property = "foo")
RETURN p

请使用标签!

答案 1 :(得分:0)

你能在关系/边上添加属性吗?

()-[r:label{property:"foo"}]->()

这将强制使用 foo 属性值的边。 我不是 Neo4j 专家,但对为什么这行不通很感兴趣。 也许你可以发布一个数据的小样本供人们测试。