Neo4j中CALL子查询使用UNWIND返回0条记录,改用collect()后结果变化的原因咨询
Neo4j中CALL子查询使用UNWIND返回0条记录,改用collect()后结果变化的原因咨询
我在Neo4j的CALL子查询里使用UNWIND时遇到了一个奇怪的现象,下面这个查询居然返回了0条记录:
WITH [] as a, [1] as b, [1,2] as c CALL { WITH a UNWIND a as row RETURN row as A } CALL { WITH b UNWIND b as row RETURN row as B } CALL { WITH c UNWIND c as row RETURN row as C } RETURN A, B, C
结果:
(no changes, no records)
我猜测这是因为UNWIND一个空列表时,会把查询的行数缩减到0。
但当我把第一个子查询的RETURN语句改成collect(row)之后,查询突然返回了2条记录(应该是因为列表c包含2个元素的缘故):
WITH [] as a, [1] as b, [1,2] as c CALL { WITH a UNWIND a as row RETURN collect(row) as A } CALL { WITH b UNWIND b as row RETURN row as B } CALL { WITH c UNWIND c as row RETURN row as C } RETURN A, B, C
结果:
╒═══╤═══╤═══╕ │A │B │C │ ╞═══╪═══╪═══╡ │[] │1 │1 │ ├───┼───┼───┤ │[] │1 │2 │ └───┴───┴───┘
为什么子查询里用collect()会改变整个查询的结果呢?
备注:内容来源于stack exchange,提问作者zirkelc
相关产品推荐
相关产品推荐

