当图有 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"))
我有一个 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"))