聚合节点和关系

时间:2016-09-06 09:09:08

标签: neo4j cypher

我想对我的数据库中的两个节点和关系上存在的属性执行检查。有没有办法将它们全部聚合为实体,然后对实体执行检查,而不是执行三次单独的检查?

我目前拥有的是:

MATCH (n1)-[r]-(n2) WHERE (myConditions) 
WITH n1, r, n2 
WHERE n1.property=1 AND r.property=1 AND n2.property=1 
RETURN *

我正在寻找的是:

MATCH (n1)-[r]-(n2) WHERE (myConditions) 
WITH n1, r, n2 AS entity
WHERE entity.property=1 
RETURN *

重要说明:存在超过2个节点和多个关系的查询。我想聚合所有图形实体,然后执行一次检查。

顺便说一句,如果"聚合"这个案子不是正确的术语,请随时纠正我。

1 个答案:

答案 0 :(得分:2)

您可以在路径中的所有节点和关系上使用all()any()none()等谓词。您仍然需要单独检查节点和关系。

MATCH path=(n1)-[r]-(n2)
WHERE (myConditions)
WITH path   
WHERE all(n in nodes(path) WHERE n.property = 1)
AND all(r in relationships(path) WHERE r.property = 1)
RETURN path