Neo4j - 当中间节点不存在时创建节点

时间:2016-02-11 16:53:58

标签: neo4j cypher

我使用LOAD CSV进行了一些测试,我发现了一个问题。如果还没有使用CREATE,那么如何创建一个中间节点?

例如:

我有(p:Person)-[:HAS_BANCOMAT]->(bm:Bancomat)-[:FROM]->(b:Bank)。在我的模型中,一个人只能有一个bancomat,所以,如果在我的CSV文件中我会找到一些实际上有一个以上Bancomat的人,我会坚持第一次出现。

我最终得到了这个剧本:

LOAD CSV FROM 'file:///myfile.csv' as row
WITH row.name as name, row.bank as bank, row.id as bancomat_id
//OMITTING CREATING PERSONS p AND BANKS b PART
//JUST GOING ON WHAT IS NOT WORKING
WHERE size((p)-[:HAS_BANCOMAT]->(:Bancomat)-[:FROM]->(b)) = 0
CREATE (bm:Bancomat {bancomatId: row.bancomat_id})
CREATE (p)-[:HAS_BANCOMAT]->(bm)
CREATE (bm)-[:FROM]->(b)

尺寸部分不起作用。我还尝试在NOT路径上使用(p)-[:HAS_BANCOMAT]->(:Bancomat)-[:FROM]->(b),但它也无法使用。

MERGE不是我正在寻找的解决方案。

关于我做错了什么的任何建议?

EDIT1:它不能正常工作,因为如果有些人有一个以上的话,这个剧本会创建多个链接的Bancomat。

0 个答案:

没有答案