我正在努力连接具有相同标签值的节点以显示关系。但是,当我运行下面的代码时,它正在这样做,但也为自己和同名的另一个节点添加了一个关系:
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)
)
);
答案 0 :(得分: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
语句确保不会创建重复的关系。