【问题标题】:How to remove mutiple edges in gremlin query如何在 gremlin 查询中删除多条边
【发布时间】:2017-03-06 08:51:49
【问题描述】:

我在 User 顶点和 Event 顶点

之间创建了一条名为“created”的边
 user1(8312) ---created---> event1(1234)

 user1(8312) ---created---> event2(4567)

 user1(8312) ---created---> event3(7890)

我可以一次删除一条边,但是如果我想删除多条边必须循环并打多个数据库调用。有没有办法一次删除多条边。

【问题讨论】:

    标签: gremlin tinkerpop3


    【解决方案1】:

    如果你想在多个顶点之间删除边,那么你可以这样做:

    gremlin> g = TinkerFactory.createModern().traversal()
    ==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
    gremlin> g.V(1).outE()
    ==>e[9][1-created->3]
    ==>e[7][1-knows->2]
    ==>e[8][1-knows->4]
    gremlin> g.V(1).outE().where(inV().hasId(within(2,3))).drop()
    gremlin> g.V(1).outE()
    ==>e[8][1-knows->4]
    

    您可以在Gremlin Recipes 中阅读更多相关信息。

    【讨论】:

    • 感谢您的回答。
    【解决方案2】:

    我不知道你是如何移除边缘的,但​​如果你只是想从 ID 为 8312 的顶点移除所有传出 created 边缘,那么这应该可以:

    g.V(8312).outE('created').drop().iterate()
    

    【讨论】:

    • 这是正确的答案,但值得注意的是,这仍然循环通过每个边缘以丢弃它。我不知道有任何图形数据库实现可以优化 Gremlin 的那一点以避免这样做。
    • 如果我给出 outE("created").drop() 所有的边都将被丢弃。我想在两个特定顶点之间丢弃边
    • 这是删除两个顶点之间边的查询
    • g.V(1).bothE().where(otherV().hasId(2)).drop() 但是对于多个顶点。有什么办法吗?
    猜你喜欢
    • 2019-07-26
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2015-04-19
    相关资源
    最近更新 更多