py2neo cypher 在 for 循环中创建与中心节点的多个关系

py2neo cypher create several relations to central node in for loop

刚开始使用 neo4j、py2neo 和 Cypher。

我遇到了以下问题,google 以及我对要问的问题的了解还没有给我答案或正确方向的有用提示。总之:

问题: 我不知道如何在 python/py2neo 中创建唯一起始节点与我在 for 循环中动态创建的多个后续节点之间的关系。

背景: 我有一个 json 对象,它定义了一个 person 对象,它有一个 id 和几个属性,例如最喜欢的颜色、最喜欢的食物等。

因此,在我的 py2neo 脚本开始时,我定义了我的人。在此之后,我循环遍历我的 json 这个人拥有的每个 属性。

这很好用,没有任何关系,我最终得到了一个 neo4j 图表,其中有几个节点具有正确的参数。

如果我对文档的理解是正确的,我必须进行匹配以找到我新创建的人,对于我想要 link 的每个新 属性。这对我来说似乎很荒谬,因为我刚刚创建了这个人并且仍然在内存中引用了这个人对象。但对我来说,尚不清楚如何实际编写用于创建关系的代码。此外,作为 python 和 Cypher 的相对新手,最佳实践对我来说仍然是未知数。

我的理解是我可以使用py2neo

graph = Graph(http://...)
tx = graph.begin()
p = Node("Person", id)
tx.create(p)

然后我可以稍后参考 p。但是对于我的属性,其中可能有很多,我在 python 中创建了一个字符串,就像这样(这里是伪代码,我有一个很好的 oneliner 适合我的实际情况,包括 lambda、join、map、format 等等上)

for param in params:
  par = "MERGE (par:" + param + ... )
  tx.append(par)
tx.process()
tx.commit()

如何为 for 循环中的每个 par 创建与此人的关系 "likes"?

或者我需要重新考虑我的整个解决方案吗?

求助?! :-)

//乔纳斯

考虑到你已经创建了一个节点 Alice 并且你想创建另一个动态节点,我建议在动态解析节点时,每次(在循环中)将它存储在一个变量中,创建一个节点它然后在关系语法中实现。语法是

关系(Node_1,关系,Node_2)

现在这里要知道的关键是 type(Node_1) 和 type(Node_2) 都将是 Node。

我已经将 json 中的所有节点(仅它们的名称)存储在名为节点的列表中。 既然你提到你只参考了爱丽丝 a = ("Person", 姓名:"Alice") 对于节点中的节点:(不包括爱丽丝) =节点(,名称:“”) =关系(一个,,

确保迭代变量名,否则它会一直覆盖。