Java Neo4j cypher查询以查找连接的节点

Java Neo4j cypher查询以查找连接的节点,java,neo4j,Java,Neo4j,我提出了这样的质疑 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 AL

我提出了这样的质疑

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    
以['1000Anthem.txt'、'1007AW.txt'、'100Art.txt'作为NDS
展开范围(0,尺寸(NDS)-2)与i相同
展开范围(i+1,尺寸(NDS)-1)为j
其中NDS,NDS[i]为N1,NDS[j]为N2
匹配路径=(N1)-[*]-(N2)

其中,length(path)+1您的N1和N2变量绑定到列表中的字符串

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    
之后的匹配将尝试将它们用作节点,这是不可能的。字符串不是节点

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    
如果要查找其中一个属性等于字符串的节点,则需要使用不同的方法,为节点使用不同的变量,并在where子句中使用谓词仅筛选节点属性等于字符串的节点

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    
编辑

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    
您还没有提供这些节点应该是什么、没有标签和非描述性变量名的任何上下文,所以我只想做一个粗略的猜测,并说这些节点的标签是:File,属性是
name

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    
在查询开始时查找和收集节点的方式如下:

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    
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
变量将是一个节点集合,而不是字符串集合,因此查询的其余部分在语法上是正确的。

您能给我一个示例进行解释吗?。
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