Gremlin:如何从select中提取值

时间:2019-05-06 16:38:18

标签: gremlin

我有以下gremlin查询:

gremlin> g.E('96b546e0-bf87-9649-2694-ccc29acec83e').as('e')
    .properties('foo').as('foo').select('e').outV().outE()
    .has('foo', __.select('foo')).valueMap()

    ==>{foo=bar2}

    ==>{foo=bar}

上面的查询旨在从一条边开始,然后从其outV识别具有相同边属性'foo'的所有其他边。问题在于has()期望第二个参数有一个值,而select()返回一个属性

我的问题 :。如何在起始边缘上捕获'foo'的值,然后在has()或where()中使用该值来滤除与属性'foo'共享不同值的边缘?

1 个答案:

答案 0 :(得分:1)

要比较一个元素的属性与另一个元素的属性,请使用where()

g.E('96b546e0-bf87-9649-2694-ccc29acec83e').as('e').
  outV().outE().
  where(eq('e')).
    by('foo')

要排除原始边缘,您可以这样做:

g.E('96b546e0-bf87-9649-2694-ccc29acec83e').as('e').
  outV().outE().
  where(neq('e')).
  where(eq('e')).
    by('foo')