使用 Azure Cosmos DB for Apache Gremlin 访问系统文档属性
适用对象: Gremlin
Azure Cosmos DB for Gremlin 具有与每个项有关的系统属性,例如_ts
、_self
、_attachments
、_rid
和_etag
。 此外,Gremlin 引擎会添加与边缘有关的 inVPartition
和 outVPartition
属性。 默认情况下,这些属性可供遍历。 但是,可将特定属性或所有这些属性都包含在 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)