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