apoc.coll.sortMulti

Details

Syntax

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

Description

Sorts the given LIST<MAP<STRING, ANY>> by the given fields. To indicate that a field should be sorted according to ascending values, prefix it with a caret (^). It is also possible to add limits to the LIST<MAP<STRING, ANY>> and to skip values.

Arguments

Name

Type

Description

coll

LIST<MAP>

The list of maps to be sorted.

orderFields

LIST<STRING>

The property keys to be used to sort the list of maps by. The default is: [].

limit

INTEGER

The amount of results to return. The default is: -1.

skip

INTEGER

The amount to skip by. The default is: 0.

Returns

LIST<ANY>

Usage examples

The following sorts a list of maps by the name property in ascending order:

RETURN apoc.coll.sortMulti([
  {name:'graphs'},
  {name:'are',age:32},
  {name:'everywhere',age:42}
], ['^name']) as output;
Results
Output

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

The following sorts a list of maps by the name property in ascending order and then the age property in descending order:

RETURN apoc.coll.sortMulti([
  {name:'graphs'},
  {name:'are',age:32},
  {name:'are',age:21},
  {name:'everywhere'}
], ['^name', 'age']) as output;
Results
Output

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

The following sorts a list of maps by the name property in ascending order and returns only one value:

RETURN apoc.coll.sortMulti([
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
], ['^name'], 1) as output;
Results
Output

[{name: "are"}]

The following sorts a list of maps by the name property in ascending order and skips the first value:

RETURN apoc.coll.sortMulti([
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
], ['^name'], -1, 1) as output;
Results
Output

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

The following sorts a list of maps by the name property in ascending order, skips the first value, and returns only one value:

RETURN apoc.coll.sortMulti([
  {name:'graphs'},
  {name:'are'},
  {name:'everywhere'}
], ['^name'], 1, 1) as output;
Results
Output

[{name: "everywhere"}]