当图具有0个顶点时,如何向上插入?

问题描述

我有一个upsert查询,可以在图形中插入顶点,如下所示:

V().coalesce(
    __.V().hasLabel("Person").has(id,"ABC"),__.addV(_a).property(id,"ABC")
).limit(1)

但是,当图形有0个顶点作为起点时,它不起作用。

如何调整此查询,以便在图表为空时成功执行?

解决方法

您可以使用Gremlin食谱中显示的element existence模式进行此操作。在您的示例中为:

g.V().hasLabel("Person").has(id,"ABC").fold().coalesce(
    unfold()
    addV(_a).property(id,"ABC")
).limit(1)

折叠将确保至少有一个遍历。

,

为此通常推荐使用以下配方的配方:

g.V().hasLabel("Person").has(id,"ABC").
      fold().
      coalesce(
        unfold(),addV("Person").property(id,"ABC"))

给出的ID是唯一的,您也可以这样做:

g.V().has(id,"ABC"))