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')
)
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')
)