我正在尝试执行查询构建器,并且我需要对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子句就可以了吗?
答案 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;