#neo4j #cypher
Вопрос:
Мне нужно отсортировать узлы по createdAt
метке времени в порядке убывания. Это необязательный параметр. Есть старые узлы, у которых нет этого параметра. Когда я пытаюсь отсортировать, как предложено в документе neo4j:
MATCH (node:MyTag)
WHERE ...
RETURN node
ORDER BY node.createdAt DESC
Я получаю узлы, которых createAt
не существует, до тех, где они существуют. Как я могу сначала получить узлы, которые были созданы в порядке убывания, а затем иметь узлы, у которых нет поля createAt?
Овации
Ответ №1:
Вы можете добавить поле в свой ВОЗВРАТ
COALESCE ( node.createdAt, 999999999) AS sortField
это дало бы вам ценность для сортировки.
Комментарии:
1. Мы не уверены, что 999999999 достаточно велик, чтобы быть в конце сортировки. Не так ли? Это значение метки времени в datetime равно 9 сентября 2001 года по Гринвичу.
2. Хорошо.. идея не зависит от точного значения. Идея состоит в том, чтобы использовать столбец с предсказуемым значением вместо нулей, чтобы вы могли влиять на порядок.
3. Отмечено при подаче идеи. Не давать 100% правильного ответа не идеально.
4. в итоге я пошел с
COALESCE ( node.createdAt, 0) AS sortField
5. Хорошо. Я думаю, что это подтверждает мой ответ 😉