我们可以在where子句中发出中间的顶点

问题描述 投票:0回答:1

我希望以单向方式遍历,但是在返回并获取在路径中过滤的顶点时遇到困难。请帮忙。

g.V().hasLabel('states').as('s').
  in().hasLabel('url').as('u').
  select('s').
  where(and(inE('exporting').has('forward','states'),
            inE('release').has('forward','states'))).
  select('u')
azure-cosmosdb gremlin tinkerpop3
1个回答
1
投票

由于所有过滤器几乎都依赖于s,因此使用match()步骤是有意义的。

g.V().hasLabel('states').
  match(__.as('s').in().hasLabel('url').as('u'),
        __.as('s').inE('exporting').has('forward','states'),
        __.as('s').inE('release').has('forward','states')).
  select('u')

至少,这使得阅读更容易。但是,有一种更简单的方法来编写查询,它根本不需要标签:

g.V().hasLabel('states').
  and(inE('exporting').has('forward','states'),
      inE('release').has('forward','states')).
  in().hasLabel('url')
© www.soinside.com 2019 - 2024. All rights reserved.