在以下方案中,节点“x”不存在。
start x=node:node_auto_index(key="x"), y=node(*)
return count(x), count(y)
似乎如果找不到任何起点,则不会返回任何内容。
有关如何解决此问题的任何建议吗?
答案 0 :(得分:3)
这就像下面的说法(在SQL中) - 如果表X为空,你会发生什么?
select count(x), count(y)
from x, y
我不确定你要在这里查询到底是什么,但是你可能需要一次获得一个计数,如果有可能x会回来而没有结果:
start x=node:node_auto_index(key="x")
with count(x) as cntx
start y=node(*)
return cntx, count(y) as cnty
答案 1 :(得分:0)
感谢Wes,我想出了如何使用旧的Cypher语法(pre 2.0)进行“条件添加”:
START x=node:node_auto_index(key="x")
with count(x) as exists
start y=node:node_auto_index(key="y")
where exists = 0
create (n {key:"y"})<-[:rel]-y
return n, y
这里的关键是你不能在“where”子句之后触发另一个“start”。在检查条件之前,您需要查询第二个节点(这对性能有害)。无论如何,这在2.0中使用if-then-else语句进行了补救......