Cypher:在新创建的节点之间创建关系链

时间:2014-02-24 09:12:34

标签: neo4j cypher

我正在创建事件节点来跟踪应用程序中的更改历史记录。有一个操作可以同时创建多个节点。我希望能够创建事件节点并创建它们之间的关系,但我正在努力使查询语法正确。

以下是一些示例数据:

CREATE (user:User)-[:LATEST]->(e0:Event)<-[:LATEST]-(pg:Pg),(A:Record)-[:IDENTIFIER]->(A1:Identifier),(B:Record)-[:IDENTIFIER]->(B1:Identifier),(C:Record)-[:IDENTIFIER]->(C1:Identifier)

enter image description here 让我们假设刚刚创建了记录A(195),B(197)和C(199)。创建之前的最新事件是e0(193)。我想要实现的最终结果是为A1,B1,C1创建一个新事件。最新的关系也需要更新。 enter image description here

对于查询,我有id或用户,pg和记录(A,B和C)。到目前为止,我的查询包括:

START record = node(195, 197, 199), user = node(192), pg=node(194)
MATCH record-[:IDENTIFIER]->identifier
WITH collect(identifier) as identifiers, user, pg
FOREACH (i in identifiers |
  CREATE UNIQUE (event:Event)
  , event-[:EVENT]->i
  , user-[:LATEST]->i
  , pg-[:LATEST]->i
  MATCH user-[r1:LATEST]->(e1) WHERE id(e1) <> id(event)
  MATCH pg-[r2:LATEST]->(e2) WHERE id(e2) <> id(event)
  CREATE UNIQUE event-[:NEXT_USER]->e1
  CREATE UNIQUE event-[:NEXT_PG]->e2
  DELETE r1, r2)

由于FOREACH中的MATCH,这不起作用。我能想到的唯一选择是创建事件并返回id。然后对返回的每个id执行单独的查询。但这对我来说似乎不是很有效。

感谢您提供的任何帮助。

0 个答案:

没有答案
相关问题