neo4j - Neo4j ORDER BY 自定义排序?
问题描述
我有一个查询,其中一部分看起来像:
WITH ... person ORDER BY person.name
问题是 person.name 包含全名,即“Albert Einstein”。所以阿尔伯特·爱因斯坦出现在“彼得·阿尔伯特”之前。
有没有办法按人的姓氏进行排序?即某种自定义比较器?当然,考虑到像麦当娜这样的名字的人:)。
我知道我可以进入数据并拆分所有名称,但如果可能的话,我想避免这样做。
解决方案
您可以即时排序,但如评论中所述,与拆分模型中的数据相比,它会很昂贵。
以电影数据集为例,这是一种根据姓氏对其进行排序的方法。将用空格分隔的名称拆分为一个列表,然后 [-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" │
推荐阅读
- python - 使用 networkx 更新图的边属性
- python - x 和 y 必须具有相同的第一维,但形状为 (34,) 和 (12,)
- java - 将 Java 8 项目迁移到 Java 11
- python - 转置数据框熊猫后将结构保留为普通数据框
- html - 在反应引导工具提示中添加 HTML 标记
- tableau-api - Tableau 计算字段标题中的记录总数
- c# - 在实时代码编辑期间而不是在构建期间运行 Roslyn 分析器
- python - 是否可以在预训练模型上使用 StackRegressor?
- reactjs - 开玩笑地在窗口中测试一个类
- c# - 如何使用 Stylecop Analyzer 和自定义规则集创建 nuget 包?