Rom*_* Eh 7 gremlin azure-cosmosdb
我是Gremlin查询语言的新手.我必须在Cosmos DB图表上插入数据(使用Gremlin.Net包),无论顶点(或边缘)是否已存在于图形中.如果数据存在,我只需要更新属性.我想用这种模式:
g.V().hasLabel('event').has('id','1').tryNext().orElseGet {g.addV('event').has('id','1')}
Run Code Online (Sandbox Code Playgroud)
但Gremlin.Net/Cosmos DB图API不支持它.有没有办法在单个查询中进行一种upsert查询?
提前致谢.
ste*_*tte 18
有很多方法可以做到这一点,但我认为TinkerPop社区一般都采用这种方法:
g.V().has('event','id','1').
fold().
coalesce(unfold(),
addV('event').property('id','1'))
Run Code Online (Sandbox Code Playgroud)
基本上,它查找"事件" has()并使用fold()步骤强制列表.该列表将为空或包含Vertex在其中.然后coalesce(),它会尝试unfold()列表,如果它有一个Vertex立即返回,否则它会执行addV().
如果您需要知道返回的顶点是否为"new",那么您可以执行以下操作:
g.V().has('event','id','1').
fold().
coalesce(unfold(),
addV('event').property('id','1')).
property('description','This is an event')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |