Neo4j中的极限结果

Neo4j中的极限结果,neo4j,cypher,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 这给了我史蒂文·斯皮尔伯格的前5部电影,按发行日期排序。现在,对于每部电影,如何按名称对前两种类型进行排序?您的问题似乎是重复的

我有导演过电影。电影有不同的类型。我想为一个导演获得前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部电影,按发行日期排序。现在,对于每部电影,如何按名称对前两种类型进行排序?

您的问题似乎是重复的

然而,其中被接受的自我回答只是对期望结果的近似。在您的情况下,它应该类似于以下内容:

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

这里有一篇知识库文章将对您有所帮助

简而言之,您可以使用APOC过程来实现此目的,或者您需要收集()结果,然后获取集合中感兴趣的部分。

您的
MATCH(f)-(g)
查询的一部分将
g
匹配到任何节点,而不仅仅是类型(特别是,至少在结果的一行中,
g
将对应于代表Steven Spielberg的节点)。的可能重复项