Gremlin:select().count() 在 choose() 内部调用时总是 returns 1

Gremlin: select().count() always returns 1 when called inside choose()

select("anything").count() 在 choose()

中调用时总是 returns 1

为什么会这样?对于这个问题,是否有任何优雅且执行速度不慢的解决方法? “优雅而不慢”我的意思是我不必写两次搜索的解决方案,因为我不能使用 select() 返回。

您可以使用以下行在 gremlin 控制台上自行测试:

g.addV("test1")
g.addV("test2")
g.addV("test3")

计数有效,因为不使用 select:

g.V().as("result").choose(V().count().is(gt(1)), constant("greater than 1"), constant("not greater than 1"))

计数不工作,因为被计数的元素来自 select:

g.V().as("result").choose(select("result").count().is(gt(1)), constant("greater than 1"), constant("not greater than 1"))

select 步骤用于return 遍历中的某个点。由于每个顶点都有自己的遍历,因此您将始终 select 只有 1 个顶点。

您应该fold“结果”值,然后count它们。

g.V().fold().as('result')
  choose(
    select('result').
    count(local).is(gt(1)),
    constant('greater than 1'),
    constant('not greater than 1')
  )

示例:https://gremlify.com/i0z0zqucgz