我有一堆带有“已更新”属性的项目,可以告知项目何时更新。但是一堆时间戳是空的。所以当我这样做时:
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版本如何都能正常工作?
答案 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