这是我的查询:
MATCH (a:Person)-[:friend]->(p:Person)<-[:friend]-(b:Person)
WITH a, b, COUNT(p) as count
WHERE count >= 2
CREATE (a)-[:friend {new: "yes"}]->(b)
RETURN a,b,count
Run Code Online (Sandbox Code Playgroud)
我试图找到一个至少有两个共同朋友的a和b,并在他们之间建立朋友关系.以下是结果示例:
a b count
name1 name2 3
name2 name1 3
Run Code Online (Sandbox Code Playgroud)
注意结果重复,这将在它们之间创建双向关系.name1 - [:friend] - > name2也表示name1 < - [:friend] -name2,所以如果我创建了双向关系,它们之间的关系将重复,如我的csv文件所示:
a b relationship
name1 name2 friend
name1 name2 friend
name2 name2 friend
name2 name2 friend
Run Code Online (Sandbox Code Playgroud)
有什么方法可以避免这种情况吗?感谢您的时间.
是的,有一个技巧可以做到这一点:
MATCH (a:Person)-[:friend]->(p:Person)<-[:friend]-(b:Person)
WHERE ID(a) < ID(b)
WITH a, b, COUNT(p) as count
WHERE count >= 2
CREATE (a)-[:friend {new: "yes"}]->(b)
RETURN a,b,count
Run Code Online (Sandbox Code Playgroud)
改变是WHERE ID(a) < ID(b)确保只选择两个方向中的一个