簡體   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