我很难用Cypher和AP​​OC库查询Neo4j。建议几天前使用APOC库来创建带有基于变量的标签的节点。创建这些节点的效果很好,但是从那以后已经过去了几天,我仍然不知道如何在这些节点之间创建关系。

我收到的错误消息与开始使用APOC之前收到的错误消息相同。查询的第一个字符始终被视为无效输入。我得到的另一个是过程调用未提供所需数量的参数。

我不太了解APOC关于如何建立关系的文档。我还尝试了CALL APOC.help('relationship'),发现还可以使用apoc.merge。但是在他们的文档中找不到。此外,我在Neo4J的博客上了解了APOC的夏季发布版本,但我仍然真的不知道如何使此查询有效。

我已经尝试过对可能想到的查询进行所有可能的调整,但是节点无法连接。我显然不知道自己在做什么,而错过了某些东西。

我真的很想能够匹配2个节点并在它们之间建立关系。这些节点的标签和属性是可变的,因为这是创建它们的方式。如果可能的话,如果关系类型也可以基于变量,那就太好了。

我正在使用Neo4j驱动程序NodeJS,并将APOC Jar文件成功放入Neo4j的插件文件夹中。

这是一个失败的查询,它可以让我了解我要执行的操作:

('CALL apoc.create.relationship([{labelParamN1}], {name: {nameParamN1}}, {relationParam}, [{labelParamN2}], {name: {nameParamN2}})',
{labelParamN1: labelParamN1, nameParamN1: nameParamN1, labelParamN2: labelParamN2, nameParamN2: nameParamN2, relationParam: relation})


此查询的一些帮助将不胜感激

最佳答案

您首先必须使用MATCH获取所需的节点(n1n2),然后使用apoc.create.relationship方法。前提是您确实想在关系上添加任何属性(因此您只需为第三个参数传递{}),以下查询应该可以工作:

MATCH (n1 {name: {nameParamN1}}), (n2 {name: {nameParamN2}})
CALL apoc.create.relationship(n1, {relationParam}, {}, n2)
YIELD rel
RETURN rel

10-08 07:41