Gremlin-顶点不与合并结合使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gremlin-顶点不与合并结合使用相关的知识,希望对你有一定的参考价值。

我是gremlin的新手,有一个非常简单的案例,需要检查以下内容:

  • 如果顶点存在
    • 更新属性
  • 其他
    • 添加具有属性的顶点

我正在为此使用Java API。

我的代码:

g.V().hasLabel("Entity").has("identifier", "123").fold()
.coalesce(
    __.unfold(),
    __.addV("Entity")
        .property("identifier", "123")
        .property("value", "A")
        .property("action", "add")
    )
.property("value", "A")
.property("action", "update")
.iterate();

我知道这是一个非常简单的情况,我参考了[CosmosDB Graph : "upsert" query pattern]中给出的示例>

但是它不起作用。如果该顶点不存在,则将其添加属性,但属性也会更新。

我是gremlin的新手,有一个非常简单的案例,需要检查以下内容:如果顶点存在,请更新属性,否则,请添加带有属性的顶点,为此我正在使用Java API。我的代码:g.V()....

答案

[编写Gremlin时,您需要考虑流。 V()产生图中所有顶点的流。设想该流中的每个项目都将命中hasLabel()has()过滤器配对,直到它们到达fold()的归约步骤为止,该步骤将产生List的顶点与过滤器标准匹配,或者如果顶点不匹配过滤器标准simple产生一个空列表,该列表成为流中的新对象。

另一答案

顶点是否存在或合并将返回现有顶点或新创建的顶点。在这两种情况下,合并后的属性设置步骤都将应用于流出的所有内容。如果只希望在合并到现有顶点后进行更改,则将其放在展开步骤之后。

以上是关于Gremlin-顶点不与合并结合使用的主要内容,如果未能解决你的问题,请参考以下文章

Gremlin删除所有顶点

如何使用 gremlin 在两个顶点之间创建双向边?

Gremlin 组所有返回的边及其顶点

Gremlin - 仅在不存在时添加顶点

在 gremlin 查询中选择多个边和顶点

如何使用 Gremlin 从我在 Titan 中关注的所有用户(边缘)获取帖子(顶点)