neo4j可选匹配和null

时间:2015-05-05 04:58:14

标签: neo4j cypher

也许这种方法是错误的,但我使用可选匹配和收集构建了一个密码查询。如果有数据一切正常,如果没有,collect会为指定的属性返回null。看起来这是按照文档预期的。

理想情况下,我希望collect返回一个空数组,或者在没有匹配时返回null。我正在使用以下内容......

MATCH (p) WHERE id(p) = 11
OPTIONAL MATCH (p) -[:car]- (c)
OPTIONAL MATCH (p) -[:driver]- (u)
RETURN {
  _id: id(p), name: p.name, type: p.type,
  cars: collect({_id: id(c), name: c.name}),
  drivers: collect({_id: id(u), name: u.email})
} AS place

1 个答案:

答案 0 :(得分:12)

试试这个

MATCH (p) WHERE id(p) = 11
OPTIONAL MATCH (p) -[:car]- (c)
OPTIONAL MATCH (p) -[:driver]- (u)
RETURN {
  _id: id(p), name: p.name, type: p.type,
  cars: CASE WHEN c IS NOT NULL THEN collect({_id: id(c), name: c.name}) ELSE NULL END,
  drivers: CASE WHEN u IS NOT NULL THEN collect({_id: id(u), name: u.email}) ELSE NULL END
} AS place

这将检查数据是否存在以便收集(如果存在)然后它将返回否则将返回空值