获取具有可选关系(如左连接)的 Neo4j 节点的属性

Som*_*luk 4 relationship neo4j cypher

我有 2 个节点,可以说 2 种类型“学生”和“班级”

Student have {id, name}.
Class have {id, name}.
Run Code Online (Sandbox Code Playgroud)

学生可以与班级节点有可选的“出席”关系。

(s:Student)-[r:ATTENDS]->(c:Class).

[r:ATTENDS] - Optional relationship. (present or may not present)
Run Code Online (Sandbox Code Playgroud)

我想要学生记录,因为它都是财产。如果存在关系,则 class_name 将与当前的“Class”节点匹配,否则 class_name 将为 null。

{student_id,student_name,class_name}
Run Code Online (Sandbox Code Playgroud)

我尝试通过密码查询,但没有得到结果。请帮忙。

OPTIONAL MATCH (s:Student)-[:ATTENDS]->(c:Class) WHERE s.id =1
RETURN s.id AS student_id , s.name as student_name, c.name as class_name
Run Code Online (Sandbox Code Playgroud)

通过此查询,如果关系存在则所有值,如果不存在关系则所有值均为空。

Dav*_*vid 5

如果您不关心关系的类型,您可以运行

MATCH (student:Student {id :1}) 
OPTIONAL MATCH (s)-->(class:Class)
RETURN student.id, student.name, class.name
Run Code Online (Sandbox Code Playgroud)

并且您无需设置别名。