限制结果在Neo4j
问题描述:
我有导演执导电影。电影有流派。我想获得导演的前5部电影,按发行日期排序,每部电影按照名称排序前2部电影。限制结果在Neo4j
MATCH(d {name: "Steven Spielberg"}) -- (f:Film)
WITH f
ORDER BY f.release_date DESC LIMIT 5
MATCH (f) -- (g:Genre)
RETURN f,g
这给了我第5部史蒂文·斯皮尔伯格的电影,由release_date排序。现在对于每部电影,我如何获得按姓名排序的前两个类型?
答
你的问题似乎是How to limit a subquery in cypher?的重复。
然而,其中接受的自我回答只是对期望结果的近似。在你的情况应该是这样的:
MATCH(d {name: "Steven Spielberg"}) -- (f:Film)
WITH f
MATCH (f) -- (g:Genre)
WITH f,g ORDER BY g.name
RETURN f,collect(g)[0..2] ORDER BY f.release_date DESC LIMIT 3
你的'MATCH(f) - (g)'查询的一部分将匹配'g'到任何节点,而不仅仅是类型(特别是,在你的结果中至少有一行'g'将对应于代表** Steven Spielberg的节点**)。 – Leon
[如何限制cypher中的子查询?]可能的重复(https://*.com/questions/29023703/how-to-limit-a-subquery-in-cypher) – Leon