限制 Neo4j 中的结果



我有导演过电影的导演。电影有类型。我想为导演获取前 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

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

这里有

一篇关于限制每行匹配结果的知识库文章,可以在这里为您提供帮助。

简而言之,要么您可以使用 APOC 过程,要么您需要 COLLECT(( 结果,然后获取集合的感兴趣切片。

您的问题似乎是如何限制密码中的子查询?的副本。

然而,其中公认的自我答案只是对所需结果的近似值。在您的情况下,它应该如下所示:

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

最新更新