Neo4j collect()根据什么属性对其输出进行排序?

Neo4j collect()根据什么属性对其输出进行排序?,neo4j,cypher,Neo4j,Cypher,集合是通过在多个节点上使用聚合“collect()”给出的,是按照特定属性或id排序的,还是顺序是随机的?我已经查看了,但没有发现任何有用的内容。这取决于您如何为收集的内容建立路径 您可以使用orderby来确保元素有序。例如: // Don't specify order MATCH (p:Crew) RETURN COLLECT(p.name) AS people > [Neo, Morpheus, Trinity, Cypher] 在上述情况下,排序最终是根据内部节点id,我们

集合是通过在多个节点上使用聚合“collect()”给出的,是按照特定属性或id排序的,还是顺序是随机的?我已经查看了,但没有发现任何有用的内容。

这取决于您如何为收集的内容建立路径

您可以使用
orderby
来确保元素有序。例如:

// 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]
这里有一个简单的例子: