Cypher / Neo4j - 在union子句后添加约束

时间:2017-01-16 14:39:22

标签: neo4j cypher

我正在尝试执行查询构建器,并且我需要对union子句产生的结果包含约束。我希望union子句的这个输出从我不想要的节点列表中过滤掉。

MATCH (n)-[r]->(x) 
WHERE ( 'filter1' IN r.property or  'filter2' IN r.property ) 
RETURN n,r,x 
UNION 
MATCH (n)-[r]->(x) 
WHERE ( 'foo2' IN n.property OR 'foo2' IN x.property 
RETURN n,r,x

作为示例,我需要在此查询中包含一个最终过滤器,以避免所有被称为“任何”的节点。

怎么做?只需在子句末尾使用where子句就可以了吗?

1 个答案:

答案 0 :(得分:2)

几周前我有一个similar question,结果发现Cypher目前不支持post-UNION processing

这意味着您应该使用相同的条件过滤联合的两个输入。

或者(如this answer中所述),如果您可以使用APOC,则可以对查询结果进行后处理:

CALL apoc.cypher.run("... UNION ...", NULL) YIELD n, r, x
WHERE ...
RETURN n, r, x;