在Neo4j中限制结果

时间:2017-06-13 07:06:03

标签: neo4j cypher

我有导演谁导演了电影。电影有流派。我希望为导演录制前5部电影,按发行日期排序,每部电影按照名称排序前2部类型。

MATCH(d {name: "Steven Spielberg"}) -- (f:Film)
WITH f
ORDER BY f.release_date DESC LIMIT 5
MATCH (f) -- (g:Genre)
RETURN f,g

这给了我按照release_date排序的史蒂芬斯皮尔伯格的前5部电影。现在,对于每部电影,我如何获得按名称排序的前2种类型?

2 个答案:

答案 0 :(得分:1)

limiting match results per row上有一篇知识库文章可以帮到你。

简而言之,您可以使用APOC程序,或者您需要收集COLLECT()结果然后采集感兴趣的集合。

答案 1 :(得分:0)

您的问题似乎与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