美文网首页
gremlin语言介绍六:查询结果处理

gremlin语言介绍六:查询结果处理

作者: 生饼 | 来源:发表于2020-07-05 03:13 被阅读0次

0 打开一个新的图库

本节的命令使用的测试数据是tinkerpop官方提供的Modern图库,使用以下命令可以加载tinkerpop modern图库,它包含6个vertex和6条edge

$ ./bin/gremlin.sh
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin>
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
image.png

1 返回traversal的结果

我们前面有些查询语句(比如g.V().hasLabel('Person'))结尾依然是一个traversal step,之所以输入回车后能在console中看到查询到的结果,是因为gremlin traversal machine在末尾自动添加了iterator()这个terminal step。

1.1 hasNext

是否有对象,返回true或false

gremlin> g.V().out('created').hasNext() 
==>true

1.2 next

# 返回一个对象
gremlin> g.V().out('created').next() 
==>v[3]

# 返回两个对象
gremlin> g.V().out('created').next(2)
==>v[3]
==>v[5]

1.3 toList、toSet、toBulkSet

所有的结果放在列表、集合、buldset中返回

1.4 iterate

迭代所有的结果返回

2 筛选和排序

2.1 dedup

去重

gremlin> g.V().values('lang')
==>java
==>java
gremlin> g.V().values('lang').dedup()
==>java

2.2 limit

返回前2个对象

gremlin> g.V().limit(2)
==>v[1]
==>v[2]

2.3 range

返回指定范围的对象

gremlin> g.V().range(0,3)
==>v[1]
==>v[2]
==>v[3]
gremlin> g.V().range(1,3)
==>v[2]
==>v[3]
gremlin> g.V().range(1, -1)
==>v[2]
==>v[3]
==>v[4]
==>v[5]
==>v[6]

2.4 skip

除了前面n个对象,返回后面所有的对象

2.5 tail

返回尾部的n个对象

gremlin> g.V().values('name').order()
==>josh
==>lop
==>marko
==>Peter
==>ripple
==>vadas
# 返回最后一个
gremlin> g.V().values('name').order().tail() 
==>vadas
# 返回最后一个
gremlin> g.V().values('name').order().tail(1)
==>vadas
gremlin> g.V().values('name').order().tail(3) 
==>Peter
==>ripple
==>vadas

2.6 order

对结果进行排序

支持的排序方式:升序(asc)、降序(desc)、打乱顺序(shuffle)

# 默认升序排序
gremlin> g.V().values('name').order()
==>josh
==>lop
==>marko
==>Peter
==>ripple
==>vadas
# 降序排列
gremlin> g.V().values('name').order().by(desc)
==>vadas
==>ripple
==>Peter
==>marko
==>lop
==>josh
# 根据对象的某个属性值排序
gremlin> g.V().hasLabel('person').order().by('age', asc).values('name')
==>vadas
==>marko
==>josh
==>Peter

3 结果统计

gremlin> g.V().count()
==>6
gremlin> g.V().values('age').max()
==>35
gremlin> g.V().values('age').mean()
==>30.75
gremlin> g.V().values('age').min()
==>27

gremlin> g.V().as('a').out('knows').as('b').math('a + b').by('age')
==>56.0
==>61.0

相关文章

网友评论

      本文标题:gremlin语言介绍六:查询结果处理

      本文链接:https://www.haomeiwen.com/subject/vmemqktx.html