我需要一个密码查询,它将匹配包含指定节点和指定边的特定长度 n 的所有路径。我开发了一个查询,但遇到语法错误,我不知道为什么,因为我是 cypher 的新手
MATCH (a, b)
WITH a, b
MATCH path = (a)-[*..n]-(b)
WHERE ALL(relName IN ['relname1', 'relname2']
WHERE ANY(rel IN relationships(path) WHERE rel.display_name = relName)
AND a.name = 'node1name' and b.name = 'node2name'
RETURN path
语法错误是
Invalid input 'a': expected "(", "ALL", "ANY" or "SHORTEST" (line 1, column 8 (offset: 7))
"MATCH (a, b)"
^
第一个
( )
中的 MATCH
被解释为单节点模式。您最多可以在每个节点模式中声明一个变量,因此 (a, b)
会引发语法错误。
无论如何,看起来您并不真正需要前两行。这是一个有效的查询(如果
n
替换为正整数),它绑定到名称为 'node1name'
的起始节点和名称为 'node2name'
的结束节点:
MATCH path = (a)-[*..n]-(b)
WHERE all(relName IN ['relname1', 'relname2']
WHERE any(rel IN relationships(path) WHERE rel.display_name = relName))
AND a.name = 'node1name' and b.name = 'node2name'
RETURN path