学习Gremlin - 8.查询结果排序

博客主要介绍了Gremlin对查询结果进行排序输出的方法。包括单独使用Step、联合使用Step传入排序方式、联合使用Step传入属性和排序方式的情况,还列举了升序、降序、随机序等不同排序方式的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8.查询结果排序

8.1、说明

Gremlin允许对查询的结果进行排序输出,可以指定按某个属性的升序、降序或是随机序的方式输出。排序方式可以通过单独的order()或者order().by(...)指定,而by() step又有一些变种,下面分别讲解order()order().by(...)的用法。

8.1.1、 单独使用order() Step,一般用于遍历器中的元素是属性时:
  • order()会将结果以升序输出;

order()单独使用时,必须保证遍历器(traverser)中的元素是可排序的,在 java 里就是必须实现java.lang.Comparable接口,否则会抛出异常。

8.1.2、 联合使用order().by(...) Step,传入排序方式,一般用于遍历器中的元素是属性时:
  • order().by(incr): 将结果以升序输出,这也是默认的排序方式;
  • order().by(decr): 将结果以降序输出;
  • order().by(shuffle): 将结果以随机序输出,每次执行结果顺序都可能不一样。

使用 order().by(…) step 但是 by() 传递的仅是一个排序方式的参数时,也必须保证遍历器(traverser)中的元素是可排序的。

8.1.3、 联合使用order().by(...) Step,传入属性和排序方式,用于遍历器中的元素是顶点或边时:
  • order().by(key): 将结果按照元素属性key的值升序排列,与order().by(key, incr)等效;
  • order().by(key, incr): 将结果按照元素属性key的值升序排列;
  • order().by(key, decr): 将结果按照元素属性key的值降序排列;
  • order().by(key, shuffle): 将结果按照元素属性key的值随机序排列,每次执行结果顺序都可能不一样。

by()step不是一个真正的step,而是一个“step modulator”,与此类似的还有as()和option()step。通过by()step可以为某些step添加traversal、function、comparator等,通常的使用方式是step().by()…by(),某些step只能添加一个by(),而有一些可以添加任意数量的by()step。

8.2、实例讲解

8.2.1、 order(),使用默认的排序(升序)输出
// 以默认排序输出所有顶点的"name"属性值
g.V().values('name').order()
8.2.2、 order().by(incr),指定以升序输出
// 以升序输出所有顶点的"name"属性值
g.V().values('name').order().by(incr)
8.2.3、 order().by(decr),指定以降序输出
// 以降序输出所有顶点的"name"属性值
g.V().values('name').order().by(decr)
8.2.4、 order().by(shuffle),指定以随机序输出
// 以随机序输出所有顶点的"name"属性值
g.V().values('name').order().by(shuffle)
8.2.5、 order().by(key),按照元素属性key的值升序(默认)排列
// 将"person"类型的顶点按照"age"升序(默认)排列输出
g.V().hasLabel('person').order().by('age')

为了使"age"属性排列显示得更清晰,我们取出顶点的"age"属性

// 将"person"类型的顶点按照"age"升序(默认)排列,并获取"age"属性
g.V().hasLabel('person').order().by('age').values('age')
8.2.6、 order().by(key, incr),按照元素属性key的值升序排列
// 将"person"类型的顶点按照"age"升序排列,并获取"age"属性
g.V().hasLabel('person').order().by('age', incr).values('age')
8.2.7、 order().by(key, desc),按照元素属性key的值降序排列
// 将"person"类型的顶点按照"age"降序排列输出,并获取"age"属性
g.V().hasLabel('person').order().by('age', decr).values('age')
8.2.8、 order().by(key, shuffle),按照元素属性key的值随机序排列
// 将"person"类型的顶点按照"age"随机序排列输出,并获取"age"属性
g.V().hasLabel('person').order().by('age', shuffle).values('age')
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值