使用多个choose步骤是否会影响查询gremlin的性能,或者如何在gremlin中执行choose步骤

使用多个choose步骤是否会影响查询gremlin的性能,或者如何在gremlin中执行choose步骤,gremlin,tinkerpop,tinkerpop3,Gremlin,Tinkerpop,Tinkerpop3,我有一个简单的Favorite查询,它告诉我一个人是否喜欢某个项目 g.V().has('personId','3f857b1').choose(identity().out('favourite').has('itemId','48a680b'),constant('Already_favourite'),choose(V().has('itemId','48a680b'),constant('NotFavourite'),constant('InvalidItem'))) 像在其他编程语言

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

g.V().has('personId','3f857b1').choose(identity().out('favourite').has('itemId','48a680b'),constant('Already_favourite'),choose(V().has('itemId','48a680b'),constant('NotFavourite'),constant('InvalidItem')))
像在其他编程语言中那样编写嵌套的choose步骤是一种不好的做法吗

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

编写嵌套的选择步骤是一种不好的做法吗

没有,但我还是会以不同的方式编写您的查询。如果项目不存在,不要浪费计算时间并快速停止遍历。另一方面,如果它存在,则尝试通过其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');
编写嵌套的选择步骤是一种不好的做法吗

没有,但我还是会以不同的方式编写您的查询。如果项目不存在,不要浪费计算时间并快速停止遍历。另一方面,如果它存在,则尝试通过其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');

我个人觉得选择跟随if-else或切换实现我个人觉得选择跟随if-else或切换实现谢谢daniel这个解释很有帮助谢谢daniel这个解释很有帮助