如何解决Neo4J:将数字排名添加到有序输出
假设存在以下查询:
MATCH(r: Restaurant)
WITH r.restaurantName AS `Restaurant name`,r.restaurantFoodRating AS `Restaurant food rating`
ORDER BY `Restaurant food rating` DESC
RETURN `Restaurant name`,`Restaurant food rating`
它返回以下内容:
第1行"Fat Bob's",10
第2行"Slim Jim's",9.8
第3行"Quick Rick's",8.7
我希望我的输出有一个根据餐厅排名的数字。评分最高的餐厅是Fat Bob's,因此它的排名应该为1。
所需的输出:
第1行"Fat Bob's",10,1
第2行"Slim Jim's",9.8,2
第3行"Quick Rick's",8.7,3
实现此目标的最佳方法是什么?
解决方法
您可以使用COLLECT
和UNWIND
来实现相同的功能。
MATCH(r: Restaurant)
WITH r ORDER BY r.restaurantFoodRating DESC
WITH COLLECT(r) as rs
UNWIND range(1,size(rs)) as rank
WITH rs[rank-1] AS r,rank
RETURN r.restaurantName AS `Restaurant name`,r.restaurantFoodRating AS `Restaurant food rating`,rank
在这里,我们已使用WITH
订购餐馆,COLLECT
将创建一个订购列表。 UNWIND
会在列表大小的1范围内循环,您可以使用此索引按顺序从列表中获取餐厅节点,并将其与餐厅详细信息一起返回。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。