Neo4j Cypher 查询包含某些节点和关系的所有路径

问题描述 投票:0回答:1

我需要一个密码查询,它将匹配包含指定节点和指定边的特定长度 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)"
        ^
neo4j cypher
1个回答
0
投票

第一个

( )
中的
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
© www.soinside.com 2019 - 2024. All rights reserved.