我运行了一个带有以下子句的Cypher查询:按xxx说明排序其中xxx是一个字符串,就像["Coyote"," Eastern Coyote"]一样。我希望它以第一个字母ASC排序,就像这样:[" Eastern Coyote","Coyote"]。但结果仍然是这样:["Coyote"," Eastern Coyote"]。仅供参考:我问了chatgpt,它说neo4j的顺序取决于字母表的unicode,但它仍然没有意义,因为“E”比“C”大。
xxx
["Coyote"," Eastern Coyote"]
[" Eastern Coyote","Coyote"]
sr4lhrrt1#
您可以在下面的示例中对列表中的项目进行排序:1.使用UNWIND和COLLECT
WITH [ "Coyote"," Eastern Coyote"] as lst UNWIND lst as l WITH l ORDER by l RETURN collect(l) as sorted_lst
字符串1.使用apoc函数排序
WITH [ "Coyote"," Eastern Coyote"] as lst RETURN apoc.coll.sort(lst) as sorted_lst
型测试结果:
╒════════════════════════════╕ │"sorted_lst" │ ╞════════════════════════════╡ │[" Eastern Coyote","Coyote"]│ └────────────────────────────┘
型
lc8prwob2#
在你的问题中,你犯了一些重大错误:
ORDER BY xxx DESC
... UNWIND xxx AS y WITH y ORDER BY y RETURN COLLECT(y) AS result
字符串或者,如果你真的想按降序返回列表:
... UNWIND xxx AS y WITH y ORDER BY y DESC RETURN COLLECT(y) AS result
2条答案
按热度按时间sr4lhrrt1#
您可以在下面的示例中对列表中的项目进行排序:
1.使用UNWIND和COLLECT
字符串
1.使用apoc函数排序
型
测试结果:
型
lc8prwob2#
在你的问题中,你犯了一些重大错误:
["Coyote"," Eastern Coyote"]
是字符串的列表,而不是字符串。ORDER BY xxx DESC
以降序排序,而不是升序。1.你说:
.仍然没有意义,因为“E”比“C”大
但是字符串“Eastern Coyote”实际上以空格字符开头,所以你应该已经将““与“C”进行了比较。““字符的词法值比“C”低。因此,
["Coyote"," Eastern Coyote"]
是按降序排序列表项后的正确答案。您需要仔细检查字符串值以删除多余的空格。
此外,要以升序(默认顺序)返回
xxx
中的字符串列表,可以使用以下代码片段:字符串
或者,如果你真的想按降序返回列表:
型