You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Neo4j查询需求:列出选修同一课程的学生节点

如何用Cypher查询选修同一课程的学生节点?

场景说明

已通过以下Cypher语句在Neo4j中创建学生、课程节点及Follow选修关系:

CREATE (n0:Student { nb: '0', name: 'A' })
CREATE (n1:Student { nb: '1', name: 'B' })
CREATE (n2:Student { nb: '2', name: 'C' })
CREATE (n3:Student { nb: '3', name: 'D' })
CREATE (n4:Student { nb: '4', name: 'E' })

CREATE (c1:Course { course_nb: '1', course_name: 'Cryptography' })
CREATE (c2:Course { course_nb: '2', course_name: 'Big Data' })
CREATE (c3:Course { course_nb: '3', course_name: 'Cloud' })

CREATE (n1)-[:Follow]->(c1)
CREATE (n2)-[:Follow]->(c1)
CREATE (n3)-[:Follow]->(c1)
CREATE (n3)-[:Follow]->(c2);

需求是查询出选修同一课程的学生节点,预期结果如下:

╒------------------╤------------------------╕
|  "Students.name" | "Courses.course_name"|
-------------------|-----------------------
"B"                | "Cryptography"
"C"                | "Cryptography"
"D"                | "Cryptography"

问题分析

之前尝试的MATCH(n:Course)<-[r:Follow]-(name) RETURN n语句存在两个问题:

  1. 仅返回课程节点,未提取学生的姓名信息;
  2. 没有筛选出有多个学生选修的课程,无法精准匹配预期结果。

正确的Cypher查询语句

1. 查询所有有至少2名学生选修的课程及对应学生

如果需要找出所有满足“同一课程被多个学生选修”的情况,使用以下语句:

MATCH (s:Student)-[:Follow]->(c:Course)
WITH c, COLLECT(s.name) AS students
WHERE SIZE(students) > 1
UNWIND students AS student_name
RETURN student_name AS "Students.name", c.course_name AS "Courses.course_name"
ORDER BY c.course_name, student_name

2. 仅查询指定课程(Cryptography)的选修学生

如果只需要获取Cryptography课程的选修学生,可直接指定课程名称过滤,语句更简洁:

MATCH (s:Student)-[:Follow]->(c:Course {course_name: 'Cryptography'})
RETURN s.name AS "Students.name", c.course_name AS "Courses.course_name"
ORDER BY s.name

结果验证

执行第二种语句后,将得到与预期完全一致的输出:

╒------------------╤------------------------╕
|  "Students.name" | "Courses.course_name"|
-------------------|-----------------------
"B"                | "Cryptography"
"C"                | "Cryptography"
"D"                | "Cryptography"

内容的提问来源于stack exchange,提问作者petrados

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 11:28:06