我有一个文档节点,其属性为documentId
和name
。我需要创建多个“活动”节点,以使每个活动都与具有CONTAINS
关系的文档相关,如下所示:
Document-CONTAINS->Activity
现在在Neo4J中,我想编写一个查询,这样它将合并文档节点(如果存在)或创建(如果不存在)。并在同一查询中创建带有CONTAINS
关系船的活动。
类似以下内容
merge (d:Document{documentId:100,name:'Doc1'})-[r:CONTAINS]->(a:Activity{name:'ijk'})
return d, a
此查询首次运行时,将创建Document
和Activity
节点,还将创建CONTAINS
关系。
当我使用不同的活动名称运行相同的查询时,它应该创建新的Activity
节点和CONTAINS
关系,并且应该合并Document
节点。
我想在一个查询中做到这一点。
答案 0 :(得分:3)
是的,只需将您的节点和关系创建分开即可。
merge (d:Document{documentId:100}) on create set d.name='Doc1'
merge (a:Activity{name:'ijk'})
merge (d)-[:CONTAINS]->(a)
return d, a
如果您的活动不是全局唯一的,则可以在文档的上下文中合并它们
merge (d:Document{documentId:100}) on create set d.name='Doc1'
merge (d)-[:CONTAINS]->(a:Activity{name:'ijk'})
return d, a