学习Gremlin - 25.附加操作sideEffect

25.附加操作sideEffect

25.1、说明

Gremlin在路径遍历的时候,可以在路径中做一些额外的附加操作,这个附加操作不会改变上一步的结果,会原封不动的传递到下一步去。附加操作看起来就像透明的,但实际上可以将附加操作的处理结果存储到外部变量中去。

下面讲解实现上述功能的具体Step:

  • sideEffect(): 在某个位置插入一个附加操作,以执行额外的操作,通常可与store、sack等配合使用。另外如下一些Step本质上也是sideEffect:

    group(string)、groupCount(string)、subgraph(string)、aggregate(string)、inject(string)、profile(string)等。

  • withSideEffect():绑定初始值到变量上,等价于sideEffect的效果。

25.2、实例讲解

25.2.1、 sideEffect(): 附加操作
// 将所有顶点打印出来
// sideEffect本身不影响结果
def list=[]
    
g.V().hasLabel('person')
    .sideEffect{list.add("vertex:"+it)}
.toList()
// 将sideEffect处理的结果打印出来
def list=[]
    
g.V().hasLabel('person')
    .sideEffect{list.add("vertex:"+it)}
.toList()
    
list

注意:Gremlin中的最后一行内容表示输出的结果

// 将sideEffect结果存到变量中
g.V().hasLabel('person')
    .sideEffect(outE().count().store("o"))
    .sideEffect(inE().count().store("i"))
    .cap("o","i")
25.2.2、 withSideEffect(): 绑定变量初始值
// 初始化一个变量以供后续条件判断中使用
// 查找javeme的共同作者,且名称在初始集合中
g.withSideEffect('p',['Linary Li','Zhoney Zhang','Tom'])
    .V('javeme').out('created').in('created')
    .values('name').where(within('p'))

25.3、综合运用

25.3.1、 计算度中心性(Degree Centrality)
// 利用sideEffect计算3种度中心性
g.V().group('both').by().by(bothE().count())
    .group('out').by().by(outE().count())
    .group('in').by().by(inE().count())
    .cap('both', 'out', 'in')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值