Как в Gremlin при использовании groupCount () с более чем одним свойством упорядочить результаты? - PullRequest
1 голос
/ 06 августа 2020
g.V().as('a').
 outE().as('r').
 inV().as('b').
 select('a', 'r', 'b').
 project('source','label','target').
 by(select('a').label()).
 by(select('r').label()).
 by(select('b').label()).
 groupCount().
 order(local).by(values, desc).
 unfold()

Этот запрос должен работать с любым набором данных gremlin.

пример вывода:

==>{source=Node, label=POINTS_AT, target=Node}=63
==>{source=Node, label=IS_RELATED_TO, target=Other}=14
==>{source=Other, label=POINTS_AT, target=Other}=3

Я только начинаю изучать Gremlin. Этот запрос выполняет groupCount для исходящей метки вершины, метки края и метки вершины и упорядочивает результаты по значениям, которые являются просто счетчиками.

Ключи - это записи карты с несколькими значениями 'source', "ярлык" и "цель". Я хотел бы упорядочить результаты по метке края, затем по исходной метке и в последнюю очередь по целевой метке. Как я могу выполнить sh это?

Кроме того, есть ли лучший способ подойти к этому, чем запрос, который я придумал?

1 Ответ

1 голос
/ 06 августа 2020

Без вашего набора данных я не уверен, что это именно то, что вы хотите, но делает ли это то, что вам нужно?

g.V().as('a').
 outE().as('r').
 inV().as('b').
 project('source','label','target').
 by(select('a').label()).
 by(select('r').label()).
 by(select('b').label()).
 groupCount().
 order(local).
   by(select(keys).select('source')).
   by(select(keys).select('target')).
   by(select(keys).select('label')).
 unfold()

Вы можете добавить desc к любому из модуляторов by, если это то, что вам нужно.

...