2015-12-15 52 views
0

我正在使用相同標籤值連接節點以顯示關係。然而,當我運行下面的代碼,它是這樣做的,但也增加了自身的關係以及與同名的其他節點:Neo4j連接兩個或多個具有相同標籤的節點

MATCH (a:rec_sku), (b:rec_sku) 
WHERE a.also_bought_sku = b.also_bought_sku 
CREATE (a)-[r:SAME_SKU]->(b) 

我也使用嵌套循環嘗試了更復雜的解決方案,但跑到同一個問題:

MATCH (n:rec_sku) 
WITH collect(n) as plist 
FOREACH (x IN plist | 
FOREACH (y IN filter(z in plist WHERE x.also_bought_sku = z.also_bought_sku)  | 
CREATE (y)-[:SAME_SKU]->(x) 
) 
); 

回答

1

爲了避免增加了一個自我的關係,只需添加一個WHERE條款進行過濾:

MATCH (a:rec_sku), (b:rec_sku) 
WHERE NOT a=b AND a.also_bought_sku = b.also_bought_sku 
CREATE UNIQUE (a)-[r:SAME_SKU]->(b) 

您也可以使用CREATE UNIQUE聲明以確保不會創建重複的關係。

相關問題