如何处理密码错误:Neo.Client Error.Statement.SyntaxError



我是Cypher的新人,我遇到了一个真正困扰我的问题。如果我像这样编码

MATCH (r:Researcher)
OPTIONAL MATCH (r)-[:SUPERVISES]->(s:Student)
WITH r, count(s) AS studentsSupervised
MATCH (r)-[:AUTHORS]->(p1:Publication)
OPTIONAL MATCH (p1)<-[:CITES*]-(p2:Publication)
RETURN r.name, studentsSupervised, count(DISTINCT p2) AS citedCount` 

它将返回正确答案。但如果我喜欢的话

MATCH (r:Researcher)
MATCH (r)-[:AUTHORS]->(p1:Publication)
OPTIONAL MATCH (r)-[:SUPERVISES]->(s:Student)
OPTIONAL MATCH (p1)<-[:CITES*]-(p2:Publication)
WITH r, count(s) AS studentsSupervised
RETURN r.name, studentsSupervised, count(DISTINCT p2) AS citedCount

我得到了一个提到Variable p2 not defined (line6, column 51) in "RETURN r.name, students Supervised, count(DISTINCT p2) AS citedCount"Error Neo.ClientError.Statement.SyntaxError

我对此感到困惑,似乎WITH切断了上下文中的关系。如果有人知道,我将不胜感激,请让我知道内部原因!!

使用 WITH 时,必须传递要在进一步查询中使用的所有变量。有关详细信息,请参阅文档。

还要注意,使用您传递的所有变量创建join WITH .因此,在这里要小心,否则输出可能不是您想要的。

请参阅下面的密码,我刚刚在WITH后添加了p2

MATCH (r:Researcher)
MATCH (r)-[:AUTHORS]->(p1:Publication)
OPTIONAL MATCH (r)-[:SUPERVISES]->(s:Student)
OPTIONAL MATCH (p1)<-[:CITES*]-(p2:Publication)
WITH r, count(s) AS studentsSupervised, p2
RETURN r.name, studentsSupervised, count(DISTINCT p2) AS citedCount

最新更新