отсортированная карта в шифре

При создании карты из коллекций с помощью apoc.map.fromLists apoc (или простого шифра, мне все равно), есть ли способ соблюдать/сохранять сортировку? Или это просто «Это карта, сортировка все равно не имеет смысла».

конкретно при выполнении

with [{name: "z", a: 1}, {name: "b", b: 1}, {name: "b2", b: 2}] as qs
return apoc.map.fromLists([q in qs | q.name], qs)

я получил

{
  "b2": {
    "name": "b2",
    "b": 2
  },
  "z": {
    "name": "z",
    "a": 1
  },
  "b": {
    "name": "b",
    "b": 1
  }
}

где действительно я хотел бы иметь

{
  "z": {
    "name": "z",
    "a": 1
  },
  "b": {
    "name": "b",
    "b": 1
  },
  "b2": {
    "name": "b2",
    "b": 2
  }
}

person tscherg    schedule 16.07.2018    source источник


Ответы (1)


К сожалению, карты в Cypher являются несортируемыми и несортируемыми структурами в отношении ключей карты.

Существует apoc.maps.sortedProperties(), однако это не не возвращает карту, а список пар ключ/значение, где эти пары отсортированы по алфавиту.

person InverseFalcon    schedule 16.07.2018
comment
Ясно, значит нет возможности управлять сортировкой карт кроме алфавитных клавиш? - person tscherg; 16.07.2018
comment
Правильно, в структурах карты нет концепции для заказа ключей. Вам нужно будет преобразовать его в структуру без карты, которая может быть отсортирована, например, предоставленная функция APOC. - person InverseFalcon; 16.07.2018