Neo4j 密码查询 order by with collect

Rit*_*ari 9 neo4j cypher

在 cypher 查询中,我有多个结果,我现在使用 collect 我如何通过 cypher 中的 collect 属性订购?

MATCH(u:User) 
WITH COLLECT({name:u.name,date:u.date}) AS userinfo 
RETURN userinfo
Run Code Online (Sandbox Code Playgroud)

或者在有多个集合已合并的情况下

MATCH(u:User)-[r:CreatedBy]->(p:Project) 
WITH COLLECT({name:p.name,date:p.date}) AS info 
MATCH(i:Institue)-[owner:Owner]->(i:Institute) 
WITH COLLECT({instituteName:i.name,date:i.date}) AS instituteinfo,info 
WITH COLLECT(instituteinfo + info) AS alldata 
RETURN alldata
Run Code Online (Sandbox Code Playgroud)

Dav*_*ett 5

在收集用户节点之前,您只需根据您选择的属性对用户节点进行排序。像这样的东西..,

MATCH(u:User)
WITH u
ORDER BY u.name
WITH COLLECT({name:u.name,date:u.date}) AS userinfo 
RETURN userinfo
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望组合多个集合并生成单个有序集合,您可以像这样重新组合它们......

MATCH(u:User)-[r:CreatedBy]->(p:Project) 
WITH COLLECT({name:p.name, date:p.date}) AS info 
MATCH(i:Institue)-[owner:Owner]->(i:Institute) 
WITH COLLECT({instituteName:i.name, date:i.date}) AS instituteinfo,info 
WITH instituteinfo + info AS alldata 
UNWIND alldata as node
WITH node
ORDER BY node.name
WITH COLLECT (DISTINCT node) as alldata
RETURN alldata
Run Code Online (Sandbox Code Playgroud)