如何解释此Cypher查询的执行路径?

问题描述

想象一下下图:

enter image description here

此查询:

MATCH(p:Person {id:1})
MATCH (p)-[:KNOWS]-(s)
CREATE (p)-[:LIVE_IN]->(:Place {name: 'Some Place'})

现在,即使LIVE_IN语句中没有涉及Place,为什么还要创建五个sCREATE?在文档中有什么地方可以解释这种行为?

注意:这与MERGECREATE无关,尽管MERGE可以解决。

编辑:响应@Tomaz答案:我故意将MATCH (p)-[:KNOWS]-(s)放在查询中,并且知道它的行为。我要求找到解释。例如,是否CREATE会为匹配模式中的每个路径或行执行,而与CREATE中涉及的节点无关?如果您有复杂的匹配模式,例如断开连接的图形,树等,该怎么办?

还要注意,关系KNOWS-->)的方向将影响返回的行数(9与1),但是CREATE将执行五个不论方向如何。

更新

我添加了另外3个节点Office并发出了以下查询:

MATCH(p:Person {id:1})
MATCH (p)-[:KNOWS]-(s)
MATCH (o:Office)
CREATE (p)-[:LOVE]->(:Place {name: 'Any Place'})

结果是:已经创建了15 LOVE Place,所以在我看来,密码在所有节点之间执行笛卡尔积

p代表1个节点,s代表5个节点,o代表3个节点=> 1 * 5 * 3 = 15

但不幸的是,我无法确认此表单neo4j docs。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)