我的数据如下
node - student
node - exam
Relationship (student)-[:given]->(exam)
这里有一名学生参加了多项考试。 我需要获取所有用户的最后3个考试
我做过这样的事 -
MATCH (s:student)-[:given]->(e:exam)
return id(s) as student_id, s.name as student_name,
collect({exam_id:id(e), mark:e.marks, exam_date:e.examp_date})
它会为我提取数据但是,我只需要通过exam_date订购考试,并且应该有限制,这样我才能获得最后3门考试
我希望这可以在一个查询中完成
如果需要更多解释,请在此发表评论。
由于
答案 0 :(得分:2)
试试这个
MATCH (s:student)-[r:given]->(e:exam)
WITH s,r,e ORDER BY e.exam_date DESC
return id(s) as student_id, s.name as student_name,
collect({exam_id:id(e), mark:e.marks, exam_date:e.examp_date})[0..3]
答案 1 :(得分:1)
您的模型并未真正针对此类查询进行优化,您可能需要查看考试的链接列表。
无论如何这是一个有效的查询:
MATCH (s:student)
MATCH (s)-[:given]->(e:exam)
WITH s, e
ORDER BY e.exam_date
WITH s, collect(e) as exams
return id(s) as student_id, s.name as student_name,
extract(x in exams[0..3] |
{exam_id: id(x), mark: x.marks, exam_date: x.examp_date}) as exams