node.js - 如何使用 APOC 创建两个 Node 之间的关系,其中 Node 的标签、属性和关系是可变的

标签 node.js neo4j cypher

我在使用 Cypher 和 APOC 库查询 Neo4j 时遇到了很大的困难。几天前有人建议我使用 APOC 库来创建带有基于变量的标签的 Node 。创建这些 Node 效果很好,但几天过去了,我仍然不知道如何在这些 Node 之间创建关系。

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

我不太了解有关如何创建关系的 APOC 文档。我还尝试了 CALL APOC.help('relationship') 并发现也可以使用 apoc.merge。但这在他们的文档中找不到。此外,我在 Neo4J 的博客上读到了有关 APOC 新夏季版本的信息,但我仍然不知道如何使该查询工作。

我已经尝试了我能想到的查询的所有可能的调整,但 Node 就是无法连接。我显然不知道自己在做什么并且错过了一些东西。

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

我正在使用 NodeJS、Neo4j 驱动程序,并将 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 获取所需的 Node (n1n2),然后使用 apoc.create.relationship 方法。如果您确实想要在关系上添加任何属性(因此您只需为第三个参数传递 {}),则以下查询应该有效:

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

关于node.js - 如何使用 APOC 创建两个 Node 之间的关系,其中 Node 的标签、属性和关系是可变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47298574/

相关文章:

javascript - Nodejs - 使用 'private key' 编码为 Base64 并且只能在服务器中解码

node.js - socket.io 在客户端不工作(传输错误)

neo4j - 由于缺乏具体化,与 RDF 图相比,属性图的表达能力太弱?

java - 在 JUNG 图中创建冗余重复节点

neo4j - 当配对顺序在密码中不重要时查询唯一的节点对

python - Neo4j 使用 py2neo 从 pandas dataframe 创建节点和关系

mysql - 从现有的 Sequelize 模型生成迁移脚本的命令是什么?

javascript - 为什么 webpack 配置必须使用 path.resolve & path.join

logging - Neo4j 和 Spring Data Neo4j 4.0.0 : Importing large datasets

neo4j - 针对 Cypher 子查询运行计算