聚合步骤乘以图表步骤

时间:2017-07-11 10:26:50

标签: gremlin tinkerpop

我在执行以下命令时在gremlin shell中遇到问题:

g.V().hasLabel('FirstLabel').aggregate('nodes')
.V().hasLabel('SecondLabel').aggregate('nodes')
.cap('nodes')

我的目标是聚合匹配这两个标签的所有节点。我知道我可以用不同的过滤步骤实现这一点,但我想用聚合访问节点。 给定的示例将每个对象的.V()步骤之后的所有内容与firstLabel相乘。

如果我有3个具有FirstLabel的节点和3个带有Secondlabel的节点,则结果集为我提供前3个节点,并且每3个节点提供3个节点(因此总共12个节点)。

然而,我可以在第一次聚合之后使用.limit(1)来缓解这种情况,但这似乎不是一个好的解决方案。

有没有办法在没有限制的情况下仅执行Graph-Step ONCE?

2 个答案:

答案 0 :(得分:2)

将当前遍历的数量减少到1.这可以使用几乎任何减少障碍步骤来完成。试试这个例子:

g.V().hasLabel('FirstLabel').aggregate('nodes').cap('nodes').
  V().hasLabel('SecondLabel').aggregate('nodes').cap('nodes')

答案 1 :(得分:1)

我不清楚您的用例,但似乎这应该可以正常工作:

g.V().hasLabel('FirstLabel', 'SecondLabel').aggregate('nodes').cap('nodes')