如何在现有的两个节点之间创建关系,我使用的是neo4j。

eac*_*one 2 python neo4j py2neo

我正在启动neo4j,并且正在使用python3.5 和py2neo。

我用以下代码构建了两个图形节点。并成功创建。[!

>>> u1 = Node("Person",name='Tom',id=1)
>>> u2 = Node('Person', name='Jerry', id=2)
>>> graph.create(u1,u2)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

之后,我将在'Tom'和'Jerry'之间建立关系,Tom的id属性为1,Jerry的id属性为2。

所以。我想,我必须使用 id 属性指向现有的两个节点。然后我尝试创建如下关系。

>>> u1 = Node("Person",id=1)
>>> u2 = Node("Person",id=2)
>>> u1_knows_u2=Relationship(u1, 'KKNOWS', u2)
>>> graph.create(u1_knows_u2)
Run Code Online (Sandbox Code Playgroud)

以上成功执行。但图表有些奇怪。

在此处输入图片说明

我不知道为什么会创建未知的图节点。以及为什么在未知的两个节点之间创建关系。

Mar*_*sse 6

您可以有两个具有相同标签和相同属性的节点。您获得的第二个节点与u1 = Node("Person",id=1)您之前创建的节点不同。这是一个具有相同标签/属性的新节点。

当您定义两个节点(即您的 newu1u2)并在它们之间创建关系时,将创建整个模式。

要获取两个节点并在它们之间创建关系,您可以执行以下操作:

# create Tom and Jerry as before
u1 = Node("Person",name='Tom',id=1)
u2 = Node('Person', name='Jerry', id=2)
graph.create(u1,u2)

# either use u1 and u2 directly
u1_knows_u2 = Relationship(u1, 'KKNOWS', u2)
graph.create(u1_knows_u2)

# or find existing nodes and create a relationship between them
existing_u1 = graph.find_one('Person', property_key='id', property_value=1)
existing_u2 = graph.find_one('Person', property_key='id', property_value=2)

existing_u1_knows_u2 = Relationship(existing_u1, 'KKNOWS', existing_u2)
graph.create(existing_u1_knows_u2)
Run Code Online (Sandbox Code Playgroud)

find_one()假设您的id属性是唯一的。