Neo4j 如何使用Cypher强制匹配结果?

Neo4j 如何使用Cypher强制匹配结果?,neo4j,cypher,Neo4j,Cypher,我有一个密码,看起来像这样: CREATE (a:LabelA { uid: "01" }) WITH * MATCH (b:LabelB {uid: "02"}) MERGE (a)-[:RELATION]->(b) 如果我没有任何uid为“02”的节点,我希望得到一个错误。此密码通过,但未创建关系(a)-[:relation](b)(因为节点“b”不存在) 我如何解决这个问题?如果您直接在neo4j上执行此查询,那么您的场景就不会出错。如果您通过API通过某个应

我有一个密码,看起来像这样:

CREATE

(a:LabelA {
    uid: "01"
})

WITH * MATCH
    (b:LabelB {uid: "02"})

MERGE (a)-[:RELATION]->(b)
如果我没有任何uid为“02”的节点,我希望得到一个错误。此密码通过,但未创建关系
(a)-[:relation](b)
(因为节点“b”不存在)


我如何解决这个问题?

如果您直接在neo4j上执行此查询,那么您的场景就不会出错。如果您通过API通过某个应用程序执行此查询,那么您可能可以编写功能来引发异常。

匹配模式不匹配任何内容不是错误

如果您的代码出于某种原因需要一个错误,那么它应该在查询响应指示没有
uid
值为“02”的节点时生成一个错误

例如,假设您在查询中添加了适当的
RETURN
语句:

MERGE  (a:LabelA {uid: "01"}) 
WITH * 
MATCH (b:LabelB {uid: "02"})
MERGE (a)-[:RELATION]->(b) 
RETURN b;

然后,您的代码可以检查是否返回了任何数据行。如果没有返回任何行,那么就没有具有
uid
值“02”的节点。

b节点是否应该绝对存在?@ChristophenWillemsen:是的,否则我希望接收错误。您无法接收错误,但如果不存在,您可以创建节点,这是您想要的吗?不,我需要错误。