【发布时间】:2018-07-22 22:34:07
【问题描述】:
我正在从已弃用的 gremlin-javascript 迁移到新的 Tinkerpop gremlin。
gremlin-javascript 支持execute 方法,该方法将任意字符串作为遍历。我们可以动态创建和传递这个字符串,例如在一个顶点上链接任意数量的property 遍历。
有没有办法在gremlin js 客户端中动态构建遍历?
【问题讨论】:
标签: gremlin
我正在从已弃用的 gremlin-javascript 迁移到新的 Tinkerpop gremlin。
gremlin-javascript 支持execute 方法,该方法将任意字符串作为遍历。我们可以动态创建和传递这个字符串,例如在一个顶点上链接任意数量的property 遍历。
有没有办法在gremlin js 客户端中动态构建遍历?
【问题讨论】:
标签: gremlin
对于 Gremlin 的所有语言变体(Java、JS、Python 等),您可以通过构造 Traversal 对象来编写 Gremlin。你有一个g,它是一个GraphTraversalSource,它产生那些Traversal对象,因此:
var t = g.V().values('names');
在t 中不会产生结果(即“名称”值的列表),而是在Traversal 对象中产生。要获得结果,您需要迭代遍历,例如:
t.toList().then(names => console.log(names));
因此,如果您有一个尚未迭代的 Traversal 对象,您可以继续添加:
var t = g.V().values('names');
t = t.limit(1);
t.next().then(...)
【讨论】:
g.V().has('concept_id', within(conceptIds))。如果由于某种原因你不能这样做并且必须构造一个or(),那么请注意这一步是可变参数,所以你可以将一个任意大小的遍历数组传递给它,它应该可以工作。