AWS海王星/Gremlin:合并边现有查询并将边查询插入到一个查询中

人气:814 发布:2022-10-16 标签: amazon-web-services gremlin amazon-neptune

问题描述

我有以下查询要检查是否存在边:

g.V("N001").hasLabel("my-type").out("parent").hasId("N002").hasLabel("my-type").limit(1).hasNext()

我也有事后查询插入边不存在:

g.V("N001").hasLabel("my-type").as("a").V("N002").hasLabel("my-type").as("b").addE("parent").from("a").to("b")

我的问题是如何将这两个查询合并为一个查询?

推荐答案

在单个查询中实现这一点的常用配方是fold..coalesce..unfold模式。在您的查询中,它将类似于:

g.V("N001").hasLabel("my-type").
  out("parent").
  hasId("N002").hasLabel("my-type").
  fold().
  coalesce(unfold(), addE('parent').from('N001').to('N002'))
           

注意ID值是唯一的,可以存在,也可以不存在,如果您知道要查找的ID,则不需要进行标签检查,除非您不确定正在使用的ID是否属于该类型(标签)。

查询将返回现有顶点或新创建的边。当然,如果愿意,您可以编辑查询以返回现有边。

289