我在执行以下命令时在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?
答案 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')