使用 Azure Cosmos DB for Apache Gremlin 访问系统文档属性

适用对象: Gremlin

Azure Cosmos DB for Gremlin 具有与每个项有关的系统属性,例如_ts_self_attachments_rid_etag。 此外,Gremlin 引擎会添加与边缘有关的 inVPartitionoutVPartition 属性。 默认情况下,这些属性可供遍历。 但是,可将特定属性或所有这些属性都包含在 Gremlin 遍历中。

g.withStrategies(ProjectionStrategy.build().IncludeSystemProperties('_ts').create())

E-Tag

此属性用于执行乐观并发控制。 如果应用程序需要将操作分为不同的遍历,可以使用 eTag 属性避免并发写入时的数据丢失。

g.withStrategies(ProjectionStrategy.build().IncludeSystemProperties('_etag').create()).V('1').has('_etag', '"00000100-0000-0800-0000-5d03edac0000"').property('test', '1')

生存时间 (TTL)

如果图形已启用文档过期,并且文档上设置了ttl属性,此属性在 Gremlin 遍历中可用作常规的顶点或边缘属性。 启用生存时间属性曝光不需要 ProjectionStrategy

  • 使用以下命令设置新顶点的生存时间:

    g.addV(<ID>).property('ttl', <expirationTime>)
    

    例如,在 123 秒后会自动删除使用以下遍历创建的顶点:

    g.addV('vertex-one').property('ttl', 123)
    
  • 使用以下命令设置现有顶点的生存时间:

    g.V().hasId(<ID>).has('pk', <pk>).property('ttl', <expirationTime>)
    
  • 对顶点应用生存时间属性不会自动将该属性应用到关联边缘。 发生此行为的原因是边缘在数据库存储中是独立记录。 使用以下命令设置顶点的生存时间以及顶点的所有传入和传出边缘:

    g.V().hasId(<ID>).has('pk', <pk>).as('v').bothE().hasNot('ttl').property('ttl', <expirationTime>)
    

注意

可以在容器上将生存时间 (TTL) 设置为-1,也可以从 Azure 门户将其设置为 开(无默认值)。 然后,除非该项显式设置了 TTL 值,否则任何项的 TTL 都是无限的。

下一步

Azure Cosmos DB 中的生存时间 (TTL)