如何使Cypher强制使用MATCH结果?

时间:2016-04-20 14:05:31

标签: neo4j cypher

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

CREATE

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

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

MERGE (a)-[:RELATION]->(b)

如果我没有任何带有uid "02"的节点,我希望收到错误消息。此密码通过,但未创建关系(a)-[:RELATION]-(b)(因为节点' b'不存在)。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

如果您在neo4j上直接执行此查询,则Ter无法使您的方案出错。如果您通过API通过某个应用程序执行此查询,那么您可以通过编写功能来抛出异常。

答案 1 :(得分:0)

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

如果您的代码由于某种原因需要出错,那么当查询响应表明没有uid值为" 02"

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

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

然后,您的代码可以检查是否返回了任何数据行。如果没有返回任何行,则没有uid值的节点" 02"。