我对MERGE条款有疑问。
根据手册(link),“MERGE也可以与无向关系一起使用。当需要创建一个新的时,它将选择一个方向。”。
查询
MATCH (charlie:Person { name: 'Charlie Sheen' }),(oliver:Person { name: 'Oliver Stone' })
MERGE (charlie)-[r:KNOWS]-(oliver)
RETURN r
结果
+-------------+
| r |
+-------------+
| :KNOWS[8]{} |
+-------------+
1 row
Relationships created: 1
Q1)方向如何确定?
Q2)为什么不创建两个关系(传入和传出)?
感谢。
答案 0 :(得分:0)
由于手册中没有列出,我不确定这是否重要。如果对您或您的数据模型无关紧要,您应该只合并无向关系,对于具有无向关系的查询也是如此。如果重要,那就使用直接关系。
Neo4j可以向后或向前穿越单一关系而不会受到惩罚。通常没有理由有两种关系。有些情况虽然有意义,例如当一个方向的关系并不意味着这种关系得到回报时。例如,a:社交网络中的FOLLOWING关系。一个人可以跟随另一个人,但这并不意味着另一个人正在追随,这将需要第二个关系向另一个方向发展。