当图有 0 个顶点时如何插入?

How to upsert when the graph has 0 vertices?

我有一个 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").
      fold().
      coalesce(
        unfold(),
        addV("Person").property(id, "ABC"))