第13期 Gremlin Steps:
as()+select()
、as()+where()
、as()+match()
、as()+dedup()
本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据,如下图所示:
上一期: 深入学习Gremlin(12):数学运算
路径选取与过滤说明
Gremlin支持从走过的路径里选取部分数据作为结果,并且可以在选取时进行条件过滤。
下面讲解实现上述功能的具体Step:
as()+select()
: 对路径中结果进行选取,首先通过as(label)
对任意步骤打上标签,然后使用select(label)
来选取若干历史步骤的结果作为新结果。此外还可通过select().by(property)
来指定根据什么维度进行选取。as()+where()
: 以条件匹配的方式进行路径结果选取,只有符合条件的路径才能被选取出来。as()+match()
: 以模式匹配的方式进行路径结果选取,只有符合模式的路径才能被选取出来。as()+dedup()
: 根据路径中的若干步骤的结果进行去重,只有首次出现的路径段才能被选取出来。
实例讲解
下面通过实例来深入理解每一个操作。
-
Step
as()...select()
:对路径中结果进行选取示例1:
// 从路径中选取第1步和第3步的结果作为最终结果 g.V('2:HugeGraph').as('a') .out().as('b') .out().as('c') .select('a', 'c')
对比:不选取时获取的完整路径
g.V('2:HugeGraph').as('a').out().as('b').out().as('c').path()
示例2:
// 从集合中选择最后一个元素 g.V('2:HugeGraph').as("a") .repeat(out().as("a")).times(2) .select(last, "a")
试一试:<