Neo4j 属性不是';t按字母顺序排列

Neo4j 属性不是';t按字母顺序排列,neo4j,cypher,Neo4j,Cypher,我注意到ORDERBY子句根据ASCII顺序对文本进行排序,而不是像MySQL那样按字母顺序 换言之,Neo4J就是这样对属性进行排序的: Apple Carrot banana MySQL会这样订购: Apple banana Carrot 让Neo4J按字母顺序排序的最佳方法是什么?一种方法是像这样使用upper(或lower): Apple banana Carrot MATCH(e)按上级(e.name)ASC返回e.name顺序 另一个想法是创

我注意到ORDERBY子句根据ASCII顺序对文本进行排序,而不是像MySQL那样按字母顺序

换言之,Neo4J就是这样对属性进行排序的:

Apple  
Carrot  
banana  
MySQL会这样订购:

Apple  
banana  
Carrot  
让Neo4J按字母顺序排序的最佳方法是什么?一种方法是像这样使用upper(或lower):

Apple  
banana  
Carrot  
MATCH(e)按上级(e.name)ASC返回e.name顺序

另一个想法是创建一个新属性nameSort,它与name属性相同,但大小写相同


还有其他方法吗?我宁愿做一些简单的事情,比如上面的Cypher修改,而不是创建一个新属性,但我不知道性能影响是什么。

Neo4j执行字典字符串排序,这就是您看到的。这是有案可查的。要实现不区分大小写的排序,您需要自己实现(例如您建议在查询期间或存储属性值时转换大小写)。

如果返回的数据大小较小,则更容易在查询中使用修饰符。如果不是,那么,在我看来,最好添加一个新属性,其中值以大写(或小写)形式存储,并确保在此属性上创建索引。特别是Unicode的字典顺序。(撇开区分大小写不谈,它可能有也可能没有某种语言的字母顺序;这取决于语言和书写系统。)