neo4j - Neo4j 如何使用 apoc.merge.relationship 向我现有的密码添加第二个自定义节点和关系
问题描述
所以我正在处理 neo4j 中的电子邮件数据。在下面的示例中,Sender
是一个节点并且Link
(如果电子邮件包含链接)是一个节点,并且这些节点通过使用Outcome
csv 中的列的关系连接。该列Outcome
可以是以下两种情况之一:aborted
或delivered
。
LOAD CSV WITH HEADERS FROM ("file:///sessions/parsed_message_amp.csv") AS row
WITH row WHERE NOT row.Url_Sub_Fld IS null
MERGE (a:Sender { name: row.From})
MERGE (b:Link { name: row.Url_Sub_Fld})
WITH a, b, row
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b) YIELD rel
RETURN a, b
返回:
我想向前迈出一步,并从另一列添加Recipient
谁收到了第二个关系。是在 csv 的Links
列中,关系来自可以是或的列。Recipient
To
Outcome2
to
failed
我想要的输出是:
我努力了:
LOAD CSV WITH HEADERS FROM ("file:///sessions/parsed_message_amp.csv") AS row
WITH row WHERE NOT row.Url_Sub_Fld IS null
MERGE (a:Sender { name: row.From})
MERGE (b:Url { name: row.Url_Sub_Fld})
MERGE (c:Recipient { name: row.To})
WITH a, b, c, row
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b, row.Outcome2, {}, {},c) YIELD rel
RETURN a, b, c
以及添加第二个WITH
,CALL
但这也不起作用。我想在一个脚本中完成这一切。
解决方案
你试图一次做太多事情。您不需要在一次调用中合并整个模式,使用对 proc 的两次调用一次合并一个段:
...
WITH a, b, c, row
CALL apoc.merge.relationship(a, row.Outcome, {}, {}, b) YIELD rel as rel1
CALL apoc.merge.relationship(b, row.Outcome2, {}, {}, c) YIELD rel as rel2
RETURN a, b, c
推荐阅读
- java - if 和 else 语句在 java 中的 onClick() 方法中不起作用
- node.js - 如何在 api 响应中给出自定义错误消息
- reactjs - 如何通过在 reactjs 中使用 react-data-grid 创建所需大小的网格?
- typescript - 在 TypeScript 中将导入的类与命名空间合并
- python-3.x - python3模块v:“module.classObj”
- python - 图像分类问题中 Raspberry Pi 0 上的 Tensorflow Lite 量化
- amazon-web-services - Correct Root CA for aswIoT mqtt server
- swift - 通用函数:表达式类型不明确,没有更多上下文
- amazon-web-services - 使用实例 ID 访问在 AWS 实例中运行的 WebService
- android - 使用 Jetpacks 导航组件时的奇怪片段生命周期