【问题标题】:Dynamic gremlin traversal construction动态 gremlin 遍历构造
【发布时间】:2018-07-22 22:34:07
【问题描述】:

我正在从已弃用的 gremlin-javascript 迁移到新的 Tinkerpop gremlin

gremlin-javascript 支持execute 方法,该方法将任意字符串作为遍历。我们可以动态创建和传递这个字符串,例如在一个顶点上链接任意数量的property 遍历。

有没有办法在gremlin js 客户端中动态构建遍历?

【问题讨论】:

    标签: gremlin


    【解决方案1】:

    对于 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().or(__.has('concept_id', 'G1200000000'), __.has('concept_id', 'G1200000099'))
    • 在这种特定情况下,只需列出“concept_id”并将其提供给g.V().has('concept_id', within(conceptIds))。如果由于某种原因你不能这样做并且必须构造一个or(),那么请注意这一步是可变参数,所以你可以将一个任意大小的遍历数组传递给它,它应该可以工作。
    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多