什么时候适合使用g.query()... vertex()vs gVhas()

D.M*_*ill 1 gremlin titan

我对这个有点困惑.在整个文档中可以找到几个类似的例子.如 :

g.V.has('name','hercules').next()
g.query().has("name",EQUAL,"hercules").vertices()
Run Code Online (Sandbox Code Playgroud)

有人可以澄清上述两者之间的过程有何不同?

谢谢

ste*_*tte 5

第一个是gremlin-groovy语法:

g.V.has('name','hercules').next()
Run Code Online (Sandbox Code Playgroud)

并且迭代所有顶点以查找具有值为"hercules"的"name"属性的顶点.如果"名称"被索引,则泰坦将利用索引来避免线性扫描以找到这样的顶点.

第二个基本上是Java和Titan API.上面的gremlin-groovy代码基本上编译成你的第二个语句:

g.query().has("name",EQUAL,"hercules").vertices()
Run Code Online (Sandbox Code Playgroud)

但是,在第二个语句的情况下,它返回一个与过滤器匹配的所有顶点的迭代器,并且不会弹出第一个,如gremlin语句中所示(给定使用next()).