Neo4j Cypher对无序集合进行排序

时间:2016-02-21 02:59:11

标签: neo4j cypher

我想在此question中执行与用户非常相似的操作,即对集合中的元素进行排序。但是,与该问题中的用例不同,我的收藏品未分类。

所以要使用该问题的例子:

```MATCH (node:node) - [:has] -> (scores) 
WITH node 
ORDER BY node.created DESC 
RETURN count(node.name) AS count, node.name, collect(node.created) AS created

count   node.name   created
3       "name1"     [1410234609620,1410234606534,1410234506799]
1       "name2"     [1410234434936]
1       "name3"     [1410234454573]
2       "name4"     [1410463902552,1410460561481]
1       "name5"     [1410234485185]
2       "name6"     [1410234548527,1410234525740]
```

接受的答案是:

MATCH (node:node) 
WITH node
ORDER BY node.created DESC 
WITH count(node.name) AS count, node.name as name,   collect(node.created) AS created
WITH count, name, head(created) as timeSort, created
RETURN count, name, created
ORDER BY timeSort DESC

当集合已经排序时,获取头(已创建)将返回正确的结果。我的不是。有没有办法在调用head之前对该集合进行排序?

1 个答案:

答案 0 :(得分:1)

要对集合进行排序,您可以使用UNWIND + ORDER BY

UNWIND coll as x
WITH x ORDER BY x.foo
RETURN collect(x);