apoc.coll.sortMulti

详细信息

语法

apoc.coll.sortMulti(coll [, orderFields, limit, skip ])

描述

根据给定的字段对提供的 LIST<MAP<STRING, ANY>> 进行排序。若要指定按升序排列某个字段,请在其名称前加上脱字符(^)。也可以对 LIST<MAP<STRING, ANY>> 添加限制(limit)和跳过(skip)值。

参数

名称

类型

描述

coll

LIST<MAP>

待排序的 Map 列表。

orderFields

LIST<STRING>

用于对 Map 列表进行排序的属性键。默认值为:[]

limit

INTEGER(整数)

返回的结果数量。默认值为:-1

skip

INTEGER(整数)

跳过的结果数量。默认值为:0

返回

LIST<ANY>

用法示例

以下示例展示了如何分别使用 APOC 和 Cypher 按 name 属性的升序对 Map 列表进行排序

apoc.coll.sortMulti
WITH [
  {name:'graphs'},
  {name:'are',age:32},
  {name:'everywhere',age:42}
] AS list
RETURN apoc.coll.sortMulti(list, ['^name']) as output
使用 Cypher 的 COLLECT 子查询
WITH [
  {name:'graphs'},
  {name:'are',age:32},
  {name:'everywhere',age:42}
] AS list
RETURN COLLECT {
    UNWIND list AS x
    RETURN x ORDER BY x.name
} AS output
结果
输出

[{name: "are", age: 32}, {name: "everywhere", age: 42}, {name: "graphs"}]

以下示例展示了如何分别使用 APOC 和 Cypher 先按 name 属性升序,再按 age 属性降序对 Map 列表进行排序

apoc.coll.sortMulti
WITH [
  {name:'graphs'},
  {name:'are',age:32},
  {name:'are',age:21},
  {name:'everywhere'}
] AS list
RETURN apoc.coll.sortMulti(list, ['^name', 'age']) as output
使用 Cypher 的 COLLECT 子查询
WITH [
  {name:'graphs'},
  {name:'are',age:32},
  {name:'are',age:21},
  {name:'everywhere'}
] AS list
RETURN COLLECT {
  UNWIND list AS x
  RETURN x ORDER BY x.name ASC, x.age DESC
} AS output
结果
输出

[{name: "are", age: 32}, {name: "are", age: 21}, {name: "everywhere"}, {name: "graphs"}]

以下示例展示了如何分别使用 APOC 和 Cypher 按 name 属性升序排序并仅返回一个值

apoc.coll.sortMulti
WITH [
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
] AS list
RETURN apoc.coll.sortMulti(list, ['^name'], 1) as output
使用 Cypher 的 COLLECT 子查询
WITH [
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
] AS list
RETURN COLLECT {
    UNWIND list AS x
    RETURN x ORDER BY x.name LIMIT 1
} AS output
结果
输出

[{name: "are"}]

以下示例展示了如何分别使用 APOC 和 Cypher 按 name 属性升序排序并跳过第一个值

apoc.coll.sortMulti
WITH [
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
] AS list
RETURN apoc.coll.sortMulti(list, ['^name'], -1, 1) as output
使用 Cypher 的 COLLECT 子查询
WITH [
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
] AS list
RETURN COLLECT {
    UNWIND list AS x
    RETURN x ORDER BY x.name SKIP 1
} AS output
结果
输出

[{name: "everywhere"}, {name: "graphs"}]

以下示例展示了如何分别使用 APOC 和 Cypher 按 name 属性升序排序、跳过第一个值并仅返回一个值

apoc.coll.sortMulti
WITH [
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
] AS list
RETURN apoc.coll.sortMulti(list, ['^name'], 1, 1) as output
使用 Cypher 的 COLLECT 子查询
WITH [
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
] AS list
RETURN COLLECT {
    UNWIND list AS x
    RETURN x ORDER BY x.name SKIP 1 LIMIT 1
} AS output
结果
输出

[{name: "everywhere"}]