查询在 neo4j 中获取一张图而不是两张图
Query to obtain one graph in neo4j instead of two
我正在尝试使用以下查询在 neo4j 中创建图表:
LOAD CSV WITH HEADERS FROM 'file:///MyData.csv' AS row
MATCH (conta:Conta {nome: row.`Conta Origem`})
MATCH (contad:ContaD {nome: row.`Conta Destino`})
MERGE (conta)-[op:Movimentação]->(contad)
ON CREATE SET op.Valor = toFloat(row.Valor), op.`Tipo de Gasto` = row.`Tipo de Gasto`, op.`Tipo de movimentacao`=row.`Tipo de movimentacao`;
输出为:
但这并不是我想要的,因为输出显示了两个节点 1
未连接的图形;我的意思是,我想要的是节点 10
和 11
连接到 red-centered 节点 1
.
问题是它们代表通过银行账户进行的交易,而账户 11 和 10 是账户 1 的原始账户,而账户 1 又是所有其他账户的原始账户。
我怎样才能继续并更改查询以使其正确?我是 cypher 的新手,如果很明显,我很抱歉。
编辑:数据样本如下所示:
在您显示的示例 csv 文件中,2016-01-15 06:00:00 中节点 11 作为原点和节点 1 作为目标的行未连接,因为 :ContaD 上的匹配未找到节点 1;
假设;
line1: MATCH (conta:Conta {nome: row.`Conta Origem`})
line2: MATCH (contad:ContaD {nome: row.`Conta Destino`})
line3: MERGE (conta)-[op:Movimentação]->(contad)
ON CREATE SET op.Valor = toFloat(row.Valor), op.`Tipo de Gasto` = row.`Tipo de Gasto`, op.`Tipo de movimentacao`=row.`Tipo de movimentacao`;
第1行; Conta 是 node11,没问题,发现
第2行; ContaD 没有 node1,所以没有返回行
第3行;跳过此行,因为第 2 行是空行并转到 excel
中的下一行
因此 node11(节点 Conta)将不会作为节点 ContaD 连接到 node1。
建议:
为什么需要用 Conta 分隔的标签 ContaD?您可以创建另一个标签 ContaD,其中包含与 Conta 相同的节点。将另一个标签添加到现有节点的语法。
match (n:Conta) set n :ContaD
您现在可能会遇到错误,因为已经创建了 ContaD。返回创建节点和边时的脚本,并与 Conta
一起创建标签 ContaD
我正在尝试使用以下查询在 neo4j 中创建图表:
LOAD CSV WITH HEADERS FROM 'file:///MyData.csv' AS row
MATCH (conta:Conta {nome: row.`Conta Origem`})
MATCH (contad:ContaD {nome: row.`Conta Destino`})
MERGE (conta)-[op:Movimentação]->(contad)
ON CREATE SET op.Valor = toFloat(row.Valor), op.`Tipo de Gasto` = row.`Tipo de Gasto`, op.`Tipo de movimentacao`=row.`Tipo de movimentacao`;
输出为:
但这并不是我想要的,因为输出显示了两个节点 1
未连接的图形;我的意思是,我想要的是节点 10
和 11
连接到 red-centered 节点 1
.
问题是它们代表通过银行账户进行的交易,而账户 11 和 10 是账户 1 的原始账户,而账户 1 又是所有其他账户的原始账户。
我怎样才能继续并更改查询以使其正确?我是 cypher 的新手,如果很明显,我很抱歉。
编辑:数据样本如下所示:
在您显示的示例 csv 文件中,2016-01-15 06:00:00 中节点 11 作为原点和节点 1 作为目标的行未连接,因为 :ContaD 上的匹配未找到节点 1;
假设;
line1: MATCH (conta:Conta {nome: row.`Conta Origem`})
line2: MATCH (contad:ContaD {nome: row.`Conta Destino`})
line3: MERGE (conta)-[op:Movimentação]->(contad)
ON CREATE SET op.Valor = toFloat(row.Valor), op.`Tipo de Gasto` = row.`Tipo de Gasto`, op.`Tipo de movimentacao`=row.`Tipo de movimentacao`;
第1行; Conta 是 node11,没问题,发现
第2行; ContaD 没有 node1,所以没有返回行
第3行;跳过此行,因为第 2 行是空行并转到 excel
中的下一行因此 node11(节点 Conta)将不会作为节点 ContaD 连接到 node1。
建议: 为什么需要用 Conta 分隔的标签 ContaD?您可以创建另一个标签 ContaD,其中包含与 Conta 相同的节点。将另一个标签添加到现有节点的语法。
match (n:Conta) set n :ContaD
您现在可能会遇到错误,因为已经创建了 ContaD。返回创建节点和边时的脚本,并与 Conta
一起创建标签 ContaD