Gremlin查询语言教程“ as”过滤器

时间:2019-03-05 13:39:06

标签: gremlin tinkerpop

在本教程中

http://tinkerpop.apache.org/docs/current/tutorials/getting-started/

gremlin> g.V().as('a').out().as('b').out().as('c').
           select('a','b','c')
==>[a:v[1],b:v[4],c:v[5]]
==>[a:v[1],b:v[4],c:v[3]]

我不明白g.V().as('a')是什么意思,它是将所有顶点都限定为“ a”,还是迭代每个顶点并为每次迭代调用一个顶点“ a”?

这是图

enter image description here

1 个答案:

答案 0 :(得分:1)

那是一个步骤标签。这意味着V()被命名为“ a”,第一个out()被命名为“ b”,第二个out()被命名为“ c”。步骤标签使您可以访问该步骤当前的遍历器(在本例中为select())。

因此,在遍历的第一次迭代中,您首先找到v[1]。格雷姆林从那里经过out(),然后到达v[4]。他从那里横穿out(),然后到达v[5]。因此,v[5]是输出:

gremlin> g.V().as('a').out().as('b').out().as('c').next()
==>v[5]

但是,如果您想知道第一次迭代V()的内容,您可以参考我们看到的步骤是v[1]

gremlin> g.V().as('a').out().as('b').out().as('c').select('a').next()
==>v[1]

或者,如果我们想查看示例中所做的每一步:

gremlin> g.V().as('a').out().as('b').out().as('c').select('a','b','c').next()
==>a=v[1]
==>b=v[4]
==>c=v[5]

基本上类似于:

gremlin> g.V().out().out().path().next()
==>v[1]
==>v[4]
==>v[5]