Neo4j 如果未找到任何内容,请将可选匹配的返回类型更改为数组

Neo4j 如果未找到任何内容,请将可选匹配的返回类型更改为数组,neo4j,Neo4j,我试图弄清楚,如何处理可选匹配的空值。我想返回一个空数组,而不是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>>"}) OP

我试图弄清楚,如何处理
可选匹配的空值。我想返回一个空数组,而不是
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
MATCH(u:User{some\u属性:“some\u值”}),(x:SomeLabel{id:“})
可选匹配(u)-[:某些关系]-(x)
返回属性(u)限制25
如果用户数>1,则返回嵌套的用户列表(数组中的数组),否则返回列表

MATCH(u:User {some_property: "some_value"}), (x:SomeLabel {id: "<<someID>>"})
OPTIONAL MATCH (u)-[:SOME_RELATION]-(x) 
RETURN COLLECT(properties(u)) LIMIT 25
MATCH(u:User{some\u属性:“some\u值”}),(x:SomeLabel{id:“})
可选匹配(u)-[:某些关系]-(x)
退货收取(物业(u))限额25

始终返回列表(既不是嵌套列表,也不是
null
)的优雅方式是什么?仅使用条件表达式?

我不确定从何处获得该语法,
返回为…
是无效的,即使它是有效的,
properties()
返回一个映射,而不是列表。同样在上一次查询中,
COLLECT(properties(u))
应该返回一个空列表,即使
u
为空,因此不需要强制返回空列表

但是对于希望返回空集合而不是null的其他查询,如果第一个表达式为null,则可以使用
COALESCE()
返回您提供的默认值

...
RETURN coalesce(possibleNullVariable, []) as result

我不确定您从何处获得该语法,
返回为…
无效,即使它是有效的,
properties()
返回一个映射,而不是列表。同样在上一次查询中,
COLLECT(properties(u))
应该返回一个空列表,即使
u
为空,因此不需要强制返回空列表

但是对于希望返回空集合而不是null的其他查询,如果第一个表达式为null,则可以使用
COALESCE()
返回您提供的默认值

...
RETURN coalesce(possibleNullVariable, []) as result

是我的错,我编辑了查询<代码>合并(属性(u),[])
工作正常,谢谢!一个稍有不同的示例:如何确保
调用apoc.index.search(“IndexName”,“My Query~”)以COLLECT(node)作为节点返回COALESCE(node,[])
始终返回列表?它总是会返回,不需要在那里进行COALESCE。当您对null或不存在的值使用COLLECT()时,它将自动生成一个空列表。如果它确实找到了一个条目,它将结果列表嵌套在另一个数组中。我没有看到这一点。我看到一个属性映射列表。我想你可能想了解一下和之间的区别。否则,如果我误解了什么,请提供一个例子。我的错,我编辑了查询<代码>合并(属性(u),[])工作正常,谢谢!一个稍有不同的示例:如何确保
调用apoc.index.search(“IndexName”,“My Query~”)以COLLECT(node)作为节点返回COALESCE(node,[])
始终返回列表?它总是会返回,不需要在那里进行COALESCE。当您对null或不存在的值使用COLLECT()时,它将自动生成一个空列表。如果它确实找到了一个条目,它将结果列表嵌套在另一个数组中。我没有看到这一点。我看到一个属性映射列表。我想你可能想了解一下和之间的区别。否则,如果我误解了什么,请提供一个例子。