如何在单个密码语句中创建多个关系

时间:2018-11-05 19:13:42

标签: neo4j

我必须创建一组关系,所有关系都具有相同的来源和类型,如以下示例所示:

create (_1)-[:`typ`]->(:`x` {`name`:"Mark"})
create (_1)-[:`typ`]->(:`y` {`name`:"Jane"})
create (_1)-[:`typ`]->(:`z` {`name`:"John"})
...

我想有一种简短的方式来编写这些语句,例如下面的尝试?

create (_1)-[:`typ`]->[(:`x` {`name`:"Mark"}),
                       (:`y` {`name`:"Jane"}),
                       (:`z` {`name`:"John"})]

有什么主意吗?

谢谢。

保罗

1 个答案:

答案 0 :(得分:2)

您可以通过此模式以高效且简便的方式进行操作:

{batch: [
{from:"alice@example.com",to:"bob@example.com",properties:{since:2012}},
{from:"alice@example.com",to:"charlie@example.com",properties:{since:2016}}]}
UNWIND {batch} as row

MATCH (from:Label {row.from})
MATCH (to:Label {row.to})
CREATE/MERGE (from)-[rel:KNOWS]->(to)
(ON CREATE) SET rel += row.properties

感谢@MichaelHunger的5 Tips & Tricks for Fast Batched Updates of Graph Structures with Neo4j and Cypher