我正在尝试查看是否存在基于我的可选匹配中的关系的node :Customer。然后,如果我的客户有订单,我希望与他们建立一些关系。我不确定正确的语法是什么。
MERGE (o:Order {account: 'j593jfsh', id: '35353'})
OPTIONAL MATCH (c:Customer)-[:HAS_ORDER]->(o)
MERGE (c)-[:HAS_SESSION]->(s)
MERGE (c)-[:HAS_ORDER]->(o)
WHERE c IS NOT NULL"发布于 2019-02-15 04:35:49
可以这样做的一种方法是使用pattern comprehension代替可选的匹配。这将把所有有订单的客户收集到一个列表中,然后您可以使用FOREACH来合并关系。如果没有客户,列表将为空,并且FOREACH将没有要处理的内容。
...
MERGE (o:Order {account: 'j593jfsh', id: '35353'})
WITH o, s, [(c:Customer)-[:HAS_ORDER]->(o) | c] as customers
FOREACH (c in customers |
MERGE (c)-[:HAS_SESSION]->(s)
MERGE (c)-[:HAS_ORDER]->(o)
)
...https://stackoverflow.com/questions/54698538
复制相似问题