我想知道如何处理 OPTIONAL MATCH
结果的空值。我想返回一个空数组,而不是 null
。
将用户作为列表返回,无论用户数是多少:
MATCH(u:User {some_property: "some_value"})
RETURN properties(u) LIMIT 25
将用户作为列表返回,如果用户数> 1,否则null
:
MATCH(u:User {some_property: "some_value"}), (x:SomeLabel {id: "<<someID>>"})
OPTIONAL MATCH (u)-[:SOME_RELATION]-(x)
RETURN properties(u) LIMIT 25
将用户作为嵌套列表(数组中的数组)返回,如果用户数&gt; 1,否则作为清单。
MATCH(u:User {some_property: "some_value"}), (x:SomeLabel {id: "<<someID>>"})
OPTIONAL MATCH (u)-[:SOME_RELATION]-(x)
RETURN COLLECT(properties(u)) LIMIT 25
什么是始终返回列表的优雅方式,既不是嵌套也不是null
?仅使用条件表达式?
答案 0 :(得分:2)
我不确定您从哪里获取该语法,RETURN as ...
无效,即使有,properties()
也会返回地图,而不是名单。同样在上一个查询中,即使COLLECT(properties(u))
为空,u
也应返回一个空列表,因此您不需要强制返回空列表。
但是对于其他想要返回空集合而不是null的查询,如果第一个表达式为null,则可以使用COALESCE()
返回您提供的默认值。
...
RETURN coalesce(possibleNullVariable, []) as result