使用很多选择步骤效果查询gremlin的性能或如何在gremlin中执行选择步骤

时间:2017-02-13 06:17:35

标签: gremlin tinkerpop tinkerpop3

我有一个简单的最喜欢的查询,它告诉一个项目是否是一个人最喜欢的

g.V().has('personId','3f857b1').choose(identity().out('favourite').has('itemId','48a680b'),constant('Already_favourite'),choose(V().has('itemId','48a680b'),constant('NotFavourite'),constant('InvalidItem')))

编写嵌套选择步骤是一种不好的做法,就像在其他编程语言中一样

我想知道我们是否可以在gremlin中实现存储过程

1 个答案:

答案 0 :(得分:2)

  

编写嵌套选择步骤

是一种不好的做法

不,但我仍然会以不同的方式编写您的查询。如果项目不存在,请不要浪费计算时间并快速停止遍历。另一方面,如果它存在,试着通过它的id找到它;不要为每个相邻的顶点获取itemId属性:

result = g.V().has('itemId', '48a680b').as('item').
           V().has('personId','3f857b1').coalesce(
                 out('favourite').where(eq('item')).constant('Already_favourite'),
                 constant('NotFavourite')).tryNext().orElse('InvalidItem');