密码辅助,将两个可选匹配与一个匹配相结合



我试图有一个密码,比如,

OPTIONAL MATCH (a1:Article) WHERE a1.status='active'
WITH collect(a1) as a1_col
OPTIONAL MATCH (a2:Article) WHERE a2.category='xyz'
WITH DISTINCT a1_col + collect(a2) as a
MATCH (a)-[:author]->(u:User)
WHERE NOT id(u)=101
RETURN a

我在这个密码上遇到了Type mismatch: a already defined with conflicting type List<Node>错误,任何这方面的帮助将不胜感激。我需要在这里分开OPTIONAL_MATCH和 MATCH 子句。

变量a是一个List<Node>,你在MATCH子句中使用它作为Node

您应该改用此查询:

OPTIONAL MATCH (a1:Article) WHERE a1.status='active'
WITH collect(a1) as a1_col
OPTIONAL MATCH (a2:Article) WHERE a2.category='xyz'
WITH DISTINCT a1_col + collect(a2) as a
MATCH (article)-[:author]->(u:User)
WHERE NOT id(u)=101 AND article IN a
RETURN a

我认为您可以像这样优化查询:

MATCH (u:User) WHERE id(u)=101 WITH u
MATCH (a:Article)
WHERE (a.category='xyz' OR a.status='active') AND
NOT (a)-[:author]->(u)
RETURN collect(DISTINCT a)

相关内容

最新更新