图数据库HugeGraph学习-14:分支

choose和branch说明

在对图进行遍历分析时,有时需要根据某些条件对当前的对象集合进行不同的操作,也就是if-then-else语法结构。Gremlin中有一类step可以满足这种分支需求,这组step叫做branch step。branch()是这类step的基础,比较抽象,而choose()是典型的branch step。
choose()的基本使用方法有两类:

单独使用,choose(predicate, true-traversal, false-traversal):根据predicate判断,当前对象满足时,继续true-traversal,否则继续false-traversal
与option配合使用,choose(traversal).option(value1, traversal1).option(…)…:根据对象通过traversal的结果决定后续操作,如果结果是value1,则该对象继续traversal1,以此类推
option()不是一种Gremlin step,只是一种辅助语法,可与choose()配合使用

相关指令

  1. if-then-else型choose()
    例子:
    // 查找所有的“person”类型的顶点
    // 如果“age”属性小于等于20,输出他的朋友的名字
    // 如果“age”属性大于20,输出他开发的软件的名字
    // choose(condition, true-action, false-action)
    g.V().hasLabel(‘person’)
    .choose(values(‘age’).is(lte(20)),
    __.in(‘knows’),
    __.out(‘created’)).values(‘name’)

  2. option()型choose()语句
    // 查找所有的“person”类型的顶点
    // 如果“age”属性等于0,输出名字
    // 如果“age”属性等于28,输出年龄
    // 如果“age”属性等于29,输出他开发的软件的名字
    // choose(predicate).option().option()…
    g.V().hasLabel(‘person’)
    .choose(values(‘age’))
    .option(0, values(‘name’))
    .option(28, values(‘age’))
    .option(29, __.out(‘created’).values(‘name’))

  3. 如果choose(predicate, true-traversal, false-traversal)中false-traversal为空或者是identity(),则不满足条件的对象直接通过choose()

  4. choose()和option()配合使用时,还提供了一个none,不满足其他选项的对象,执行none选项的traversal

  5. branch()
    branch()有三种用法:

lambda方式,filter{it.get()…}
Traversal方式,filter(Traversal)
特定branch step方式
demo:
// 查询所有顶点
// “name”属性值为“HugeGraph”的顶点输出其“lang”属性
// “name”属性值不为“HugeGraph”的顶点输出其“name”属性
// lambda方式
g.V().branch {it.get().value(‘name’)}
.option(‘HugeGraph’, values(‘lang’))
.option(none, values(‘name’))

原文链接:https://blog.csdn.net/linlin1989117/article/details/82703743

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taotaobujuerulv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值