Aggregate-Step умножается после Graph-Step

У меня проблема в оболочке gremlin при выполнении следующей команды:

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 только ОДИН РАЗ без ограничения?


person TApplis    schedule 11.07.2017    source источник


Ответы (2)


Уменьшите количество токоведущих траверс до 1. Это можно сделать, используя практически любую ступень редуцирующего барьера. Попробуйте это, например:

g.V().hasLabel('FirstLabel').aggregate('nodes').cap('nodes').
  V().hasLabel('SecondLabel').aggregate('nodes').cap('nodes')
person Daniel Kuppitz    schedule 12.07.2017
comment
Спасибо, это сработало! Но я до сих пор не понимаю, почему возникает проблема. Простой шаг барьера () вместо cap () не имеет никакого эффекта. Я не понимаю, почему aggregate (). Cap () уменьшает traverser до 1 - person TApplis; 12.07.2017
comment
Ключевым моментом является использование ступени уменьшающего барьера. cap(), fold(), count() и т. Д. Будут работать, так как все они ведут к одному оставшемуся проходчику. - person Daniel Kuppitz; 12.07.2017

Я не понимаю вашего варианта использования, но похоже, что это должно работать нормально:

g.V().hasLabel('FirstLabel', 'SecondLabel').aggregate('nodes').cap('nodes')
person Jason Plurad    schedule 11.07.2017
comment
Конечно, это дает мне правильные вершины, но я вижу довольно существенную проблему с умножением шага графа для каждого решения, найденного в моем агрегате. Эти ярлыки были скорее примером, вызывающим проблему. - person TApplis; 11.07.2017