在以下场景中,节点“x”不存在。
start x=node:node_auto_index(key="x"), y=node(*)
return count(x), count(y)
似乎如果找不到任何起点,则不会返回任何内容。
有什么建议可以解决这个问题吗?
这就像在说下面(在 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
感谢 Wes,我想出了如何使用旧的 Cypher 语法(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 语句进行了补救......