【问题标题】:Gremlin: Add an edge and drop an edge in single gremlin queryGremlin:在单个 gremlin 查询中添加边和删除边
【发布时间】:2019-07-26 21:34:42
【问题描述】:

如何在单个 gremlin 查询中添加一条边并将一条边删除到相同的顶点类型。

假设我们有两种类型的顶点类型 A --is--> B 现在我有连接到 B 的其他一些顶点的顶点。

我想将 A 的顶点更新为 B 的某个其他顶点。

目前,我正在删除当前的 B 顶点,然后添加新的顶点。

【问题讨论】:

    标签: datastax gremlin datastax-enterprise tinkerpop datastax-enterprise-graph


    【解决方案1】:

    您可以使用sideEffect() 一次遍历完成:

    gremlin> g.V().has('person','name','marko').as('m').
    ......1>   outE('knows').
    ......2>   filter(inV().has('person','name','vadas')).
    ......3>   sideEffect(drop()).
    ......4>   V().has('person','name','peter').
    ......5>   addE('knows').from('m')
    ==>e[13][1-knows->6]
    

    在第 1 行,我们基本上确定了我们想要摆脱的边(即从“marko”到“vadas”的“知道”边),我们在第 3 行 drop()。在第 4 行,我们查找顶点我们现在希望将“marko”连接到谁,然后在第 5 行添加边。

    【讨论】:

    • 嘿@Stephen,知道如何在 gremlin-scala 中完成。副作用在 gremlin-scala 中没有按预期工作
    • 我无法按预期使用 sideEffect。gV(businessVertex).as("a").outE() .and(.label.is(EdgeLabels.IS_LABEL), _ .inV().hasLabel(VertexLabels.TRIPTYPE_LABEL)).sideEffect(_=>_.drop()).iterate()。 .. 它没有解决它的错误
    • [InvalidQueryException: 无法从发送的请求中读取遍历。原因:找不到方法:DefaultGraphTraversal.sideEffect([{}])]
    • 为什么sideEffect() 被这样称呼(即我认为是 lambda)?应该和我一样sideEffect(_.drop())
    • 没有它就不行。它会引发编译问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2015-07-06
    • 2018-02-11
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    相关资源
    最近更新 更多