Add or get vertex in Azure Cosmos DB Graph API

后端 未结 2 570
闹比i
闹比i 2021-01-25 09:58

Using Gremlin, I can create a vertex in an Azure Cosmos DB graph by issuing

g.addV(\'the-label\').property(\'id\', \'the-id\')

and subsequently

相关标签:
2条回答
  • 2021-01-25 09:59

    The "upsert pattern" is relatively well defined and accepted at this point. It is described here. If you want to extend that to also add an edge, that's possible too:

    g.V().has('event','id','1').
      fold().
      coalesce(unfold(),
               addV('event').property('id','1')).as('start').
      coalesce(outE('link').has('id','3'),
               coalesce(V().has('event','id','2'), 
                        addV('event').property('id','2')).
                        addE('link').from('start').property('id','3'))
    

    If that looks a bit complex you can definitely simplify with a Gremlin DSL (though I'm not sure that CosmosDB supports Gremlin bytecode at this point). Here's an example with even more complex upsert logic simplified by a DSL. It's discussed in this blog post in more detail.

    0 讨论(0)
  • 2021-01-25 10:21

    Please look at this.

    http://tinkerpop.apache.org/docs/current/reference/#coalesce-step

    You can try

    g.Inject(0).coalesce(__.V().has('id', 'the-id'), addV('the-label').property('id', 'the-id'))

    btw, you won't able to find the vertex using g.V('the-label').has('id', 'the-id').

    g.V() accepts vertex id as parameters and not vertex labels.

    0 讨论(0)
提交回复
热议问题