Azure cosmosdb Gremlin on CosmosDB-在不删除顶点的情况下删除并重新创建顶点的属性

Azure cosmosdb Gremlin on CosmosDB-在不删除顶点的情况下删除并重新创建顶点的属性,azure-cosmosdb,graph-databases,gremlin,tinkerpop3,Azure Cosmosdb,Graph Databases,Gremlin,Tinkerpop3,我试图在分区的CosmosDB图中设置顶点的属性。 如果顶点以前有任何属性,我希望它们被删除并替换为新的属性集 甚至删除也有点棘手,因为“分区键”是作为不可删除的属性公开的 g.V('nodeId').has('partitionKey','xx').properties().drop() ->“Gremlin查询执行错误:无法删除分区属性。” 幸运的是,分区键属性的id是可预测的,可以用于过滤它: g.V('nodeId').has('partitionKey','xx') .propert

我试图在分区的CosmosDB图中设置顶点的属性。 如果顶点以前有任何属性,我希望它们被删除并替换为新的属性集

甚至删除也有点棘手,因为“分区键”是作为不可删除的属性公开的

g.V('nodeId').has('partitionKey','xx').properties().drop()
->“Gremlin查询执行错误:无法删除分区属性。”

幸运的是,分区键属性的
id
是可预测的,可以用于过滤它:

g.V('nodeId').has('partitionKey','xx')
.properties().not(has('id', 'nodeId|partitionKey'))
.drop()
现在我一直在尝试添加新属性。我试过:

g.V('nodeId').has('partitionKey','xx')
.properties().not(has('id', 'nodeId|partitionKey'))
.drop()
.property('a','valA')
.property('b','valB')
但这看起来像是将
property()
步骤应用于属性(空)列表,而不是顶点。 该错误没有多大帮助:

Gremlin Query Compilation Error: Column reference R_200324["_value"] cannot be located in the raw records in the current execution pipeline.
我尝试将
属性()
步骤应用于顶点(通过
选择它),但我一定是做错了什么:

g.V('nodeId').has('partitionKey','xx')
.as('v') 
.properties().not(has('id', 'nodeId|partitionKey'))
.drop()
.select('v')
.property('a','valA')
.property('b','valB')
这会产生与上述相同的错误

我还尝试了
.back('v')
而不是
。选择('v')
,但它看起来似乎在CosmosDB中不支持
back


有什么建议吗

我认为您遇到了与中所述相同的问题

基本上,
.drop()
会过滤遍历之外的所有内容,并阻止以下任何代码执行任何操作

您可以像这样使用
.sideEffect()
来解决这个问题

g.V('nodeId').has('partitionKey','xx')
.sideEffect(properties().not(has('id', 'nodeId|partitionKey')).drop())
.property('a','valA')
.property('b','valB')
TinkerPop 3.x中没有
back()