gpt4 book ai didi

neo4j - 在未找到匹配项的 OPTIONAL MATCH 之后创建

转载 作者:行者123 更新时间:2023-12-04 14:13:06 27 4
gpt4 key购买 nike

我正在尝试编写一个查询,如果另一个关系已经存在,它将创建一些关系。

START a=node(1), b=node(2), c=node(3)
OPTIONAL MATCH a-[r1:RELATIONSHIP]-(optional1)
OPTIONAL MATCH b-[r2:RELATIONSHIP]-(optional2)
CREATE c-[:NEW_RELATIONSHIP]->(optional1)
CREATE c-[:NEW_RELATIONSHIP]->(optional2)
DELETE r1, r2
RETURN a, b, c

查询返回错误:

“预期 optional1 到一个节点,但它是一个空值”

如果现有关系存在,有没有办法创建新关系?否则就忽略创建?

最佳答案

现在,您可以使用 FOREACH 解决此问题。和 CASE .例如:

START a=node(1), b=node(2), c=node(3)
OPTIONAL MATCH (a)-[r1:RELATIONSHIP]-(optional1)
OPTIONAL MATCH (b)-[r2:RELATIONSHIP]-(optional2)
FOREACH (o IN CASE WHEN optional1 IS NOT NULL THEN [optional1] ELSE [] END |
CREATE (c)-[:NEW_RELATIONSHIP]->(optional1)
)
FOREACH (o IN CASE WHEN optional2 IS NOT NULL THEN [optional2] ELSE [] END |
CREATE (c)-[:NEW_RELATIONSHIP]->(optional2)
)
DELETE r1, r2
RETURN a, b, c

我怀疑这会在 future 的 Cypher 语言更新中变得更简单。

附注。您可能不应该使用 START不再,但我想你只是为了一个例子的方便。

关于neo4j - 在未找到匹配项的 OPTIONAL MATCH 之后创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23274198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com