Janusgraph - 检查和获取两个顶点之间边缘的有效方法

J.D*_*Doe 2 scala graph-databases gremlin janusgraph

我试图使用 Scala 探索 janusgraph。

因此,对于给定的顶点 v1 和 v2,我想判断是否存在从 v1 到 v2 具有特定属性值的有向边并检索该边。

在gremlin中,我们通常会做一个,

g.V(v1).outE().where(otherV().is(v2)).hasNext()检查边缘是否存在并 ed = g.V(v1).outE().where(otherV().is(v2)).next()获取边缘。

那么,scala中对应的查询是什么?似乎不能以otherV()类似的方式使用。

谢谢。

ste*_*tte 5

otherV()在您使用它的上下文中,是从类产生的匿名遍历__。要么otherV()从该类静态导入(这是 gremlin 控制台所做的),要么只是完整地引用它:

g.V(v1).outE().where(__.otherV().is(v2)).hasNext()
Run Code Online (Sandbox Code Playgroud)

  • 我不认为你可以让 `otherV()` 在 `outE()` 上没有索引(和对这些索引的过滤器)运行得更快,这样你就可以减少可能要过滤的 `otherV()` 的数量。实际上,当我重新阅读这个问题/答案时,我想知道为什么甚至使用了 `otherV()`。`inV()` 应该足够并且可能更快。当你遍历 `bothE()` 并且不知道你可以从哪个顶点时,你只需要 `otherV()`。 (2认同)