也许这种方法是错误的,但我使用可选匹配和收集构建了一个密码查询。如果有数据一切正常,如果没有,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
答案 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
这将检查数据是否存在以便收集(如果存在)然后它将返回否则将返回空值