【发布时间】:2019-03-26 05:02:13
【问题描述】:
我想根据indicator nodes在一组节点(report nodes)中创建一个新节点(event nodes)(每个报表节点都有几个与其相关的指标节点)。我想用规则设置新的event nodes:
- 一个
report nodes只连接一个event node - 如果多个
indicator nodes具有相同的属性“pattern”,则它们属于同一个事件节点
这是我的查询代码:
OPTIONAL MATCH
(indicator_1_1:indicator)<-[:REFERS_TO]-(report_1:report)-[:REFERS_TO]->(indicator_1_2:indicator),
(indicator_2_1:indicator)<-[:REFERS_TO]-(report_2:report)-[:REFERS_TO]->(indicator_2_2:indicator)
WHERE
indicator_1_1.pattern=indicator_2_1.pattern
and
indicator_1_2.pattern=indicator_2_2.pattern
MERGE
(report_1)-[:related_to]->(event:EVENT)<-[:related_to]-(report_2)
但我希望三个报告节点属于一个事件节点。 我想知道我应该对我的查询进行哪些更改,或者在获得两个事件节点后我应该采取什么下一步措施。
还有,我想知道有没有比我的更高效的查询代码。
谢谢!
【问题讨论】:
-
(:indicator {pattern:})的分配方式是否需要明确唯一的:event节点? -
是的,换一种说法,:event 节点设置为结束 :indicator 节点
-
如果将
MERGE分成两部分会怎样?即MERGE (report_1)-[:related_to]->(event:EVENT)MERGE (event)<-[:related_to]-(report_2)。 -
split 方法会得到类似的结果,但是经过下面两步后,它们可以很好地解决
-
那么使用两个
MERGE语句会产生您正在寻找的结果吗?