我正在创建事件节点来跟踪应用程序中的更改历史记录。有一个操作可以同时创建多个节点。我希望能够创建事件节点并创建它们之间的关系,但我正在努力使查询语法正确。
以下是一些示例数据:
CREATE (user:User)-[:LATEST]->(e0:Event)<-[:LATEST]-(pg:Pg),(A:Record)-[:IDENTIFIER]->(A1:Identifier),(B:Record)-[:IDENTIFIER]->(B1:Identifier),(C:Record)-[:IDENTIFIER]->(C1:Identifier)
让我们假设刚刚创建了记录A(195),B(197)和C(199)。创建之前的最新事件是e0(193)。我想要实现的最终结果是为A1,B1,C1创建一个新事件。最新的关系也需要更新。
对于查询,我有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执行单独的查询。但这对我来说似乎不是很有效。
感谢您提供的任何帮助。