繁体   English   中英

Neo4j密码查询以找出连接的节点

[英]Neo4j cypher query to find out connected nodes

我给这样的查询

WITH ['1000Anthem.txt','1007AW.txt','100Art.txt'] as NDS 
UNWIND RANGE(0, size(NDS)-2) as i 
UNWIND RANGE(i+1, size(NDS)-1) as j 
WITH NDS, NDS[i] as N1, NDS[j] as N2 
MATCH path = (N1)-[*]-(N2) 
WHERE length(path)+1 <=size(NDS) 
 AND ALL(n in nodes(path) WHERE n in NDS) 
RETURN path    

我收到以下错误

类型不匹配:N1已经用冲突类型String(预期节点)(第2行,第15列(偏移量:224))定义了“ MATCH path =(N1)-[*]-(N2)WHERE length(path)+1 <=大小(NDS)和所有(节点(路径)中的n,在NDS中的n)返回路径”

您的N1和N2变量绑定到列表中的字符串。

之后,MATCH尝试将它们用作节点,这是不可能的。 字符串不是节点。

如果要查找其属性之一与字符串相等的节点,则需要使用不同的方法,对节点使用不同的变量,并在WHERE子句中使用谓词以仅过滤节点属性相等的节点。到字符串。

编辑

您尚未提供有关这些节点应该是什么的上下文,没有标签,也没有提供非描述性的变量名,所以我将做出一个疯狂的猜测,并说这些是标记为:File的节点,其属性name

您将在查询开始时查找并收集节点,如下所示:

WITH ['1000Anthem.txt','1007AW.txt','100Art.txt'] as NDS 
MATCH (f:File)
WHERE f.name in NDS
WITH collect(f) as NDS
...

如果您在:File(name)上有一个索引,则该索引将用于加快查找速度。 此时的NDS变量将是节点的集合而不是字符串的集合,因此查询的其余部分在语法上是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM