gpt4 book ai didi

neo4j 对缺失匹配的查询失败,而不是返回空数组

转载 作者:行者123 更新时间:2023-12-04 14:40:22 24 4
gpt4 key购买 nike

鉴于以下密码查询

  MATCH (u:User {id: {userId}}), (b:B {id: {bId})
CREATE (c:C), (c)-[:HAS_USER]->(u), (b)-[:SOME_REL]->(c)

如您所见,我正在创建一个节点 C必须与 2 个事物有关系,某个节点 b和一些用户。

发生的情况是当 u 或 b 不存在时我得到一个空数组,但我希望 neo4j 以失败而不是空数组作为响应。这让我更容易知道哪个节点丢失了。当匹配子句不返回任何内容时,是否可以“强制”失败?

最佳答案

这就是它的工作原理,如果 MATCH返回 null 则查询失败。这就是为什么他们有 OPTIONAL MATCH可用,以便在返回 null 时不会失败。

编辑:像这样在最后添加 return

MATCH (u:User {id: {userId}}), (b:B {id: {bId})
CREATE (c:C), (c)-[:HAS_USER]->(u), (b)-[:SOME_REL]->(c)
RETURN 'success'

因此,如果您重新获得成功,则意味着匹配找到了它要找的东西,如果没有,则它没有找到

编辑2:
OPTIONAL MATCH (u:User {id: {userId}}), (b:B {id: {bId})
with *,CASE when u is not null and b is not null then [1] else [] end as exists
FOREACH (x in exists | CREATE (c:C), (c)-[:HAS_USER]->(u), (b)-[:SOME_REL]->(c))

RETURN u,b

所以现在我们做一个可选的匹配,这样它在找不到时就不会崩溃。然后我们做一个 CASE 语句,在 User 和 B 存在的地方我们创建一些关系。最后我们返回 User 和 b 并检查它们是否都存在或者它们中是否有一个 null。

关于neo4j 对缺失匹配的查询失败,而不是返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42581752/

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