2013-05-06 140 views
0

我正在使用gremlin查询来搜索给定顶点的顶点。如何在单个查询中搜索顶点并创建边?

v.both("edgeLabel").has("propertykey", "27826345"); 

该查询返回一堆顶点。现在我正在通过简单的迭代器从'v'创建所有返回顶点的边。

现在我的问题是:
是否有任何进程/查询风格可以通过,我可以寻找那些顶点和创建在 同一查询的边缘?

我已经尝试此查询:

v.both('edgeLabel').has('propertykey','27826345').gather(){g.addEdge(v,it,'TEST_LABEL')} 

但我发现了错误:

法无签名:groovy.lang.MissingMethodException.addEdge()

我目前使用Gremlin-Groovy ScriptEngine从Java类执行我的查询。

先谢谢您。

回答

1

在小鬼2.3.0,有三个新步骤:

linkIn 
linkOut 
linkBoth 

请参阅GremlinDocs(http://gremlindocs.com)有关如何使用它们的更多信息。

http://gremlindocs.com/#transform/linkboth-in-out

注意,这些管道产生sideEffect(边缘产生的),所以如果你需要得到的边缘,你可以盖住管道。

+0

非常感谢您的回复。实际上我使用的是Gremlin 2.2.0,可能这就是为什么我忽视了/错过了这些。无论如何,再次感谢你帮助我。 – Pradatta 2013-05-07 17:52:08

0

您可能需要为addEdge提供一个id。这里是javadocs

v.both('edgeLabel').has('propertykey','27826345').gather(){g.addEdge(1,v,it,'TEST_LABEL')}

+0

那么从Blueprint API来说,我通常会为ID字段发送null,以便框架可以自动创建它自己的ID。但对于Gremlin查询,我只知道有两个方法,一个没有id,另一个没有id参数。 http://gremlindocs.com/#methods/graph-addedge – Pradatta 2013-05-07 06:01:44