neo4j - 如何在'顺序中使用推送空值。 DESC到底?

时间:2015-04-06 20:36:53

标签: graph neo4j cypher

我有一堆带有“已更新”属性的项目,可以告知项目何时更新。但是一堆时间戳是空的。所以当我这样做时:  MATCH (item) return item ORDER BY item.updated DESC,所有那些w / null值都返回顶部。

我还尝试了COALESCE,这似乎适用于v2.2 ,但不是在v2.1.6中:

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

在v2.1.6中,我得到:

不再支持此语法(缺少的属性现在返回为null)。如果你真的需要旧的行为,请使用(不是(has(.updated))或.updated =)。

是否有任何替代解决方案无论neo4j版本如何都能正常工作?

2 个答案:

答案 0 :(得分:2)

您是否尝试过CASE声明?

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

答案 1 :(得分:2)

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

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

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