具有无向关系的MERGE子句

时间:2017-02-20 08:53:44

标签: neo4j

我对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)为什么不创建两个关系(传入和传出)?

感谢。

1 个答案:

答案 0 :(得分:0)

由于手册中没有列出,我不确定这是否重要。如果对您或您的数据模型无关紧要,您应该只合并无向关系,对于具有无向关系的查询也是如此。如果重要,那就使用直接关系。

Neo4j可以向后或向前穿越单一关系而不会受到惩罚。通常没有理由有两种关系。有些情况虽然有意义,例如当一个方向的关系并不意味着这种关系得到回报时。例如,a:社交网络中的FOLLOWING关系。一个人可以跟随另一个人,但这并不意味着另一个人正在追随,这将需要第二个关系向另一个方向发展。