Гремлин - подсчитать количество ребер, у которых различаются два свойства

Дана вершина g.V(1) с исходящими ребрами x.

Скажем, g.V(1) имеет свойства prop1 и prop2 на каждом из своих исходящих ребер.

Как узнать, сколько раз эти два свойства различаются?

Например (скажем, есть три исходящих ребра), если g.V(1).outE().values('prop1') возвращает:

==> A
==> B
==> C

И если g.V(1).outE().values('prop2') вернется:

==> A
==> D
==> E

Мы должны получить ответ 2: (B! = D, C! = E, но A == A)

Что-то подобное:

g.V(1).where(neq(outE().values('prop1'), outE().values('prop2'))).count()

(но это действительно работает!)


person Ian    schedule 01.08.2019    source источник


Ответы (1)


Задавая вопросы о Gremlin, всегда лучше включать некоторые образцы данных, например:

g.addV().property('pid','a').as('a').
  addV().property('pid','b').as('b').
  addE('link').from('a').to('b').property('prop1','A').property('prop2','A').
  addE('link').from('a').to('b').property('prop1','B').property('prop2','D').
  addE('link').from('a').to('b').property('prop1','C').property('prop2','E').iterate()

Вы можете сделать то, что ищете, с where() шагом:

gremlin> g.V().has('pid','a').
......1>   outE().as('compare').
......2>   where('compare', neq('compare')).
......3>     by('prop1').by('prop2').
......4>   valueMap()
==>[prop2:D,prop1:B]
==>[prop2:E,prop1:C]
person stephen mallette    schedule 01.08.2019