Neo4j ORDER BY 自定义排序?

Neo4j ORDER BY custom sorting?

我有一个查询,其中一部分看起来像:

WITH ... person ORDER BY person.name

问题是 person.name 包含全名,即“Albert Einstein”。所以阿尔伯特·爱因斯坦出现在“彼得·阿尔伯特”之前。

有没有办法按姓氏排序? IE。某种自定义比较器?当然,考虑到像麦当娜这样的人的名字:)。

我知道我可以进入数据并拆分所有名称,但我想尽可能避免这样做。

您可以即时排序,但如评论中所述,与在模型中拆分数据相比,这会很昂贵。

以电影数据集为例,这是一种根据姓氏对其进行排序的方法。 将由 space 分隔的名称拆分为一个列表,然后 [-1] 表示按该列表的最后一项排序。

MATCH (n:Person) 
WITH n ORDER by split(n.name, ' ')[-1]
RETURN n.name

result:

 ════════════════════════╕
│"n.name"                │
╞════════════════════════╡
│"Stefan Arndt"          │
├────────────────────────┤
│"Kevin Bacon"           │
├────────────────────────┤
│"Christian Bale"        │
├────────────────────────┤
│"Marshall Bell"         │
├────────────────────────┤
│"Halle Berry"           │