使用gremlin添加边缘(如果不存在)

Nic*_*ari 5 graph gremlin

我在蔚蓝中使用波斯菊图数据库。

有谁知道只有在不存在两个顶点之间才可以添加边的方法(使用gremlin图查询)?

添加顶点时可以做到这一点,但不能添加边。我从这里获取了执行操作的代码:

g.Inject(0).coalesce(__.V().has('id', 'idOne'), addV('User').property('id', 'idOne'))
Run Code Online (Sandbox Code Playgroud)

谢谢!

ste*_*tte 10

可以处理边缘。模式在概念上与顶点相同,并且围绕coalesce()。使用“现代” TinkerPop玩具图来演示:

gremlin> g.V().has('person','name','vadas').as('v').
           V().has('software','name','ripple').
           coalesce(__.inE('created').where(outV().as('v')),
                    addE('created').from('v').property('weight',0.5))
==>e[13][2-created->5]
Run Code Online (Sandbox Code Playgroud)

在这里,我们仅在“ vadas”和“ ripple”之间添加一条边,但前提是该边不存在。此处的关键是对的第一个参数进行检查coalesce()

  • 好吧,当以我使用的方式使用时,`as('v')` 有一个特殊的语法。当在 `where()` 内部使用时,它会根据 `outV()` 中的“创建”边有效过滤“vadas”(标记为“v”的步骤中的值)。因此,查询检查“vadas”和“ripple”之间是否存在边缘并返回它,或者如果不存在,则创建它。 (2认同)