如何使用APOC在节点的标签,属性和关系可变的2个节点之间创建关系

时间:2017-11-15 02:51:51

标签: node.js neo4j cypher

我很难用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})

非常感谢对此查询的一些帮助

1 个答案:

答案 0 :(得分:2)

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

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