使用参数创建多个节点和关系

时间:2014-10-11 16:40:47

标签: neo4j cypher

我想创建类似电子邮件附件的内容。 所以我有一个如下的电子邮件信息数组:

email: {name: 'aUniqueString'}
attachments: [
   {label: 1, filename: 'a.jpg'},
   {label: 2, filename: 'b.jpg'},
   {label: 3, filename: 'c.jpg'},
]

如果我只需输入一个附件,这应该有效:

MATCH (n:email {name: "aUniqueString"})
CREATE (a:attachment {filename: 'a.jpg'})
CREATE (n)-[r:ATTACHMENT {label: '1'}]->(a)

如何一次创建所有附件节点并将它们连接到电子邮件节点(使用单个查询)?

1 个答案:

答案 0 :(得分:1)

如果您将它们作为参数传递,您可以这样做:

PARAMS:

{ email: {name: 'aUniqueString'}
attachments: [
   {label: 1, filename: 'a.jpg'},
   {label: 2, filename: 'b.jpg'},
   {label: 3, filename: 'c.jpg'},
]}


CREATE (n:Email {name: {email}})
foreach (att in {attachments} |
   CREATE (a:Attachment {filename: att.filename})
   CREATE (n)-[:ATTACHMENT {label: att.label}]->(a)
)

FOREACH适用于集合,另请参见: