根据什么属性collect()排序其输出?

时间:2017-03-29 21:12:43

标签: neo4j cypher

通过在许多节点上使用聚合“collect()”来给出集合,在特定属性或id之后排序,还是随机的顺序?我看过https://cloud.google.com/bigquery/loading-data,但没有找到任何帮助。

1 个答案:

答案 0 :(得分:1)

这取决于你如何为你收集的东西建立路径。

您可以使用ORDER BY确保元素已订购。例如:

// Don't specify order
MATCH (p:Crew) 
RETURN COLLECT(p.name) AS people

> [Neo, Morpheus, Trinity, Cypher]

在上面的情况中,排序最终是根据内部节点id,我们可以通过收集该值以及name属性来确认:

MATCH (p:Crew) 
RETURN COLLECT({name: p.name, id: id(p)}) AS people

> [ {name:"Neo", id:0},  {name:"Morpheus", id:1},  {name:"Trinity", id:2},  {name:"Cypher", id:3}]

但我们可以使用ORDER BY明确指定集合中元素的顺序:

// Order by name, ascending
MATCH (p:Crew) 
WITH p ORDER BY p.name ASC 
RETURN COLLECT(p.name) AS people

> [Cypher, Morpheus, Neo, Trinity]

这里有一个简单的例子:http://console.neo4j.org/r/bqxlmx