如果这不会导致循环,我的查询应该创建从 A 到 B 的连接。
这意味着如果已经存在从 B 到 A 的连接,我无法将 A 连接到 B。
我有以下疑问
1 MATCH (a:User) WHERE ID(a) = 0
2 MATCH (b:User) WHERE ID(b) = 1
3 WITH a, b, NOT EXISTS{(b)-[*]->(a)} as A
4 WHERE A
5 MERGE (a)-[:has_connection]->(:Connection)-[:supports]->(b);
6 RETURN
7 CASE A
8 WHEN TRUE THEN 'success'
9 ELSE 'error'
10 END
1, 2 -> 我只找到 2 个节点并将它们命名为 a 和 b
3 -> 我想检查从b到a是否没有连接并将结果保存在变量A中
4,5 -> 如果 A 为真,我想创建从 a 到 b 的连接
6 - 10 -> 我按条件 A 返回调试字符串
我认为这个语法是正确的,但我收到以下错误
Neo.ClientError.Statement.SyntaxError: Variable `A` not defined (line 2, column 10 (offset: 18))
" CASE A"
^
我一定误解了 cypher 中的范围
有人可以解释一下我做错了什么吗,
如果从 b 到 a 没有连接,我希望得到结果“成功”,如果有连接,我想得到结果“错误”
尽管查询不是最优的 错误只是我在第 5 行输入的分号
删除后,我得到了预期的结果。
我希望该片段对某人有所帮助,有关优化想法,请回复