我试图有一个密码,比如,
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)