neo4j - 如何使用将 'order by' DESC 中的空值推到底部?

neo4j - How to use push null values in 'order by' DESC to the bottom?

我有一堆带有 属性 "updated" 的项目,它告诉我项目何时更新。但是一堆时间戳是空的。所以当我这样做时: MATCH (item) return item ORDER BY item.updated DESC,所有那些带空值的都在顶部返回。

我也尝试了 COALESCE这似乎在 v2.2 中有效,但在 v2.1.6 中无效:

MATCH (item) return item ORDER BY COALESCE(product.updated?,"0") DESC

在 v2.1.6 中,我得到:

此语法不再受支持(缺少的属性现在返回为 null)。如果您确实需要旧行为,请使用 (not(has(.updated)) OR .updated=)。

是否有任何替代解决方案可以不受 neo4j 版本的影响?

你试过CASE语句吗?

MATCH (item:Item)
RETURN CASE WHEN HAS(item.updated) THEN item.updated ELSE 0 END AS updated
ORDER BY updated DESC

我发现在 Neo4j 3.1.3 上,我可以结合使用 ASC 排序和厚颜无耻的 - 字符来实现此目的:

MATCH (item:Item)
RETURN item
ORDER BY -item.updated ASC

这是受 Neo4j 文档中有关 null 和排序的信息的启发:https://neo4j.com/docs/developer-manual/current/cypher/clauses/order-by/#order-null