Gremlin - 计算两个属性不同的边数

Gremlin - count number of edges where two properties differ

给定一个顶点 g.V(1),具有 x 条出站边。

假设 g.V(1) 在其每个出站边上具有属性 prop1prop2

如何找到这两个属性不同的次数?

例如(假设有三个出站边缘),如果 g.V(1).outE().values('prop1') returns:

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

如果g.V(1).outE().values('prop2') returns:

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

我们应该得到 2 的答案:(B!=D, C!=E, but A==A)

类似于:

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

(但实际上有效!)

在询问有关 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]