2015-02-10 24 views
2
收集部分

我有获得来自例如电影数据库的演员,角色和电影的Neo4j下面这个查询:排序中的Neo4j

MATCH (actor:Person {name:"Meg Ryan"})-[role:ACTED_IN]->(movies) 
RETURN actor, collect({roles: role.roles, movies: movies}) as movies 

它所有的工作很好,但是当我要订购电影发行年的收集,我遇到了一些问题。

我试图做这样的:

MATCH (actor:Person {name:"Meg Ryan"})-[role:ACTED_IN]->(movies) 
ORDER BY movies.released DESC 
RETURN actor, collect({roles: role.roles, movies: movies}) as movies 

,但我得到这个错误:把它收集在之前

Invalid input 'R': expected 'p/P' (line 2, column 2) 
"ORDER BY movies.released DESC" 
^

我怎么能为了通过电影发行年份的收藏?

回答

2

WITH关键字befor为了利用之前收集到的结果进行排序:

当心的是,与部分需要包含在随后的查询中使用的所有变量(演员,角色,在这种情况下,电影)。

MATCH (actor:Person {name:"Meg Ryan"})-[role:ACTED_IN]->(movies) 
WITH actor,role,movies 
ORDER BY movies.released DESC 
RETURN actor, collect({roles: role.roles, movies: movies}) as movies 

类似的例子在documentation中给出。

+0

在我自己回答之前,你已经打败了我10秒钟)这是正确的答案,但请将来参考,编辑它以便在WITH语句中包含“角色”变量,因此可以在RETURN语句中使用(否则会发生错误),然后我将您的答案标记为正确。感谢您的帮助! – 2015-02-10 13:55:20

+0

啊,错过了那个:-)谢谢! – 2015-02-10 14:00:27

+0

我自己错过了,但新控制台没有;) – 2015-02-10 14:04:01