neo4j 可选匹配和空

neo4j optional match and null

也许这种方法是错误的,但我已经使用可选的匹配和收集构建了一个密码查询。如果有数据,一切都很好,如果没有,为指定的属性收集 returns null。看起来这符合文档的预期。

理想情况下,我想收集到 return 一个空数组,或者在没有匹配时收集到 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

这样试试

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

这将检查是否存在要收集的数据,如果存在则将 return 否则空值将 returned