我正在使用带有Cassandra 3.9的JanusGraph 0.2。我怎样才能替换顶点?

时间:2018-01-15 10:00:51

标签: cassandra gremlin janusgraph

我们可以更新一个顶点,例如:     g.V(vertex_id).property("名称""马尔科&#34)
有没有办法替换顶点?

1 个答案:

答案 0 :(得分:4)

所以你想用另一个顶点的属性替换一个顶点的所有属性(至少是我如何理解你的问题以及你的评论)。

要删除所有属性,只需删除它们:

g.V(vertex_id).properties().drop().iterate()

我们可以看到如何将所有属性从一个顶点复制到另一个顶点in this response by Daniel Kuppitz to a question on how to merge two vertices

g.V(vertex_with_new_properties).
    sideEffect(properties().group("p").by(key).by(value())).
    cap("p").unfold().as("kv").
  V(vertex_id).
    property(select("kv").select(keys), select("kv").select(values)).
    iterate()

当我们组合这两个遍历时,我们会得到一个遍历旧属性的遍历,并从另一个顶点复制新属性:

g.V(vertex_id).
    sideEffect(properties().drop()).
  V(vertex_with_new_properties).
    sideEffect(properties().group("p").by(key).by(value())).
    cap("p").unfold().as("kv").
  V(vertex_id).
    property(select("kv").select(keys), select("kv").select(values)).
    iterate()

为现代图表采取行动:

// properties before for both vertices:
gremlin> g.V(1).valueMap(true)
==>{id=1, label=person, name=[marko], age=[29]}
gremlin> g.V(2).valueMap(true)
==>{id=2, label=person, name=[vadas], age=[27]}

// Replace all properties of v[1]:
gremlin> g.V(1).
            sideEffect(properties().drop()).
           V(2).
            sideEffect(properties().group("p").by(key).by(value())).
            cap("p").unfold().as("kv").
           V(1).
            property(select("kv").select(keys), select("kv").select(values)).
            iterate()

// v[1] properties after:
gremlin> g.V(1).valueMap(true)
==>{id=1, label=person, name=[vadas], age=[27]}

您可以在GremlinBin中看到此示例:http://www.gremlinbin.com/bin/view/5a5ca9c7891c0