如何在Gremlin中创建以下子查询?

时间:2018-03-20 04:21:17

标签: gremlin datastax-enterprise-graph

例如,使用Tinkerpop的玩具图数据(graph = TinkerFactory.createModern()),我想做类似以下的事情:

g.V().hasLabel('person').has('name', 'marko').project('a', 'b').by().by(...)

我想使用第一遍遍的顶点的属性,并在查询里面使用第二遍()。

像这样的伪代码:

by(__.V().has(hasLabel('person').has('name', [property-from-first-traversal])))

在单独的查询中这可能更容易,但我想在一个查询中执行此操作 - 类似于SQL中的子查询。

1 个答案:

答案 0 :(得分:1)

你可能正在寻找这样的东西:

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.addV('person').property('name','marko')
==>v[13]
gremlin> g.V().has('person','name', 'marko').
           project('a', 'b').
             by().
             by(__.as('x').V().hasLabel('person').where(eq('x')).by('name').count())
==>[a:v[1],b:2]
==>[a:v[13],b:2]

但是,请注意where()过滤器,到目前为止,没有任何提供程序(我知道)会将其转换为索引查找,因此它将扫描您的所有person个顶点曲线图。