1

在以下场景中,节点“x”不存在。

start x=node:node_auto_index(key="x"), y=node(*)
return count(x), count(y)

似乎如果找不到任何起点,则不会返回任何内容。

有什么建议可以解决这个问题吗?

4

2 回答 2

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
于 2013-05-13T21:55:24.300 回答
0

感谢 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 语句进行了补救......

于 2013-05-14T11:35:16.497 回答