使用Amazon Neptune时如何在Gremlin中实现start_dt is not null逻辑?
Gremlin非空判断及对应查询写法
核心非空条件写法
你要的start_dt is not null条件在Gremlin中直接用has('start_dt')即可实现,该步骤默认会筛选出存在start_dt属性且属性值不为null的记录,完全匹配SQL的非空语义。
对应你业务场景的完整Java Gremlin代码
你原来的SQL逻辑可以直接转成如下写法(假设maint_actv是你的顶点标签,g为初始化完成的GraphTraversalSource实例):
Object startDt = g.V() // 对应SQL中的from maint_actv .hasLabel("maint_actv") // 对应SQL中的rec_id = 传入Id .has("rec_id", Id) // 对应SQL中的start_dt is not null .has("start_dt") // 对应SQL中的select start_dt .values("start_dt") // 对应SQL中的limit 1 .limit(1) .next();
补充说明
- 如果你的场景还需要排除
start_dt为空字符串的情况,可以在后面追加条件:.has("start_dt", P.neq("")) - Amazon Neptune对原生
has()步骤有专门的查询优化,直接使用该写法性能优于其他自定义判断写法
内容的提问来源于stack exchange,提问作者Harish
相关产品推荐
相关产品推荐

