Вложенный список / SortOrder для списка понимания шаблона - PullRequest
0 голосов
/ 22 марта 2019

Neo4j: Каков правильный синтаксис для вложения и порядка сортировки результатов анализа списка?

В моей записи есть медиа-узлы, каждый из которых связан с пользователями, которые изменили медиа-файлы.Я пытаюсь собрать всю информацию о моей записи.

Простое понимание списка отлично работает:

MATCH r
RETURN r {.*, Media: [(r)-[:HAS_MEDIA]->(m:Media) | m {.URL, .Type, .Order}]}

Вот мои вопросы:

1) если есть много медиа, как я могу отсортировать список по .Order?

2) Я также хочу собрать информацию о m, доступную через другие узлы.Поэтому я попытался вложить:

MATCH r
RETURN r {.*, Media: [(r)-[:HAS_MEDIA]->(m:Media) | m {.URL, .Type, .Order,  [(m:Media-[t:MODIFIED_BY]->(u) | u.UserID] }]}

Это приводит к синтаксической ошибке в первой вложенной скобке.Можно ли это сделать?

В идеале я хотел бы собрать больше, чем u.UserID, в том числе в свойстве отношений .DT.

3) Когда / если я получу эту работу, тот же вопрос, что и1) - как мне отсортировать список по .DT?

Буду очень признателен за любые указатели!

--------- ОБНОВЛЕНИЕ После ответа от cybersam: ДА!Мне нужно добавить новые имена свойств, как указано в cybersam.Спасибо!

 MATCH (r)
 RETURN r {.*, Media: [(r)-[:HAS_MEDIA]->(m:Media) | m {.URL, .Type, .Order,  UserID: [(m)-[:MODIFIED_BY]->(u) | u.UserID] }]} 

MATCH (r)
RETURN r {.*, Media: [(r)-[:HAS_MEDIA]->(m:Media) | m {.URL, .Type, .Order,  UserID: [(m)-[t:MODIFIED_BY]->(u) | u {.UserID, DT: t.DT}] }]} 

Мне нужно немного больше изучить заказ, но я не верю, что ORDER BY r.Order в самом конце будет работать.Я возвращаю только один r узел.В этом массиве r я хочу отсортировать подключи (например, Media по .Order и User по t.DT).

1 Ответ

0 голосов
/ 22 марта 2019

Это работает для вас?

MATCH (r)
RETURN r {
  .*, Media: [(r)-[:HAS_MEDIA]->(m:Media) |
  m {.URL, .Type, .Order,  UserID: [(m)-[:MODIFIED_BY]->(u) | u.UserID] }]}
ORDER BY r.Order;

В проекции карты каждому свойству нужно имя, поэтому я использовал UserID в качестве имени результата внутреннего понимания шаблона.

[ОБНОВЛЕНО]

Приведенный ниже запрос может решить ваш обновленный вопрос.Синтаксис для картографических проекций и шаблонов не поддерживает сортировку содержащихся списков.

MATCH (r)-[:HAS_MEDIA]->(m:Media)
WITH r, m ORDER BY m.Order
MATCH (m)-[t:MODIFIED_BY]->(u)
WITH r, m, u{.UserID, DT: t.DT} ORDER BY u.DT
WITH r, m{.URL, .Type, .Order, User: COLLECT(u)}
RETURN r {.*, Media: COLLECT(m)} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...