确定存储文档的TTL-Couchbase

确定存储文档的TTL-Couchbase,couchbase,ttl,Couchbase,Ttl,我有一堆文件存储在couchbase bucket中。我想找到每个文档的TTL。有办法吗 编辑: 我创建了一个视图来显示元数据。我假设下面是unix的到期时间 { "id": "beer-Milk-New", "rev": "9-145c05b4021400005771779102000000", "expiration": 1467053969, "flags": 33554432 } 您没有指定Couchbase Server的哪个版本,但此回答假设您使用的是4.x

我有一堆文件存储在couchbase bucket中。我想找到每个文档的TTL。有办法吗

编辑:

我创建了一个视图来显示元数据。我假设下面是unix的到期时间

{
   "id": "beer-Milk-New",
   "rev": "9-145c05b4021400005771779102000000",
   "expiration": 1467053969,
   "flags": 33554432
}

您没有指定Couchbase Server的哪个版本,但此回答假设您使用的是4.x,并且可以运行N1QL查询

我认为你的思路是对的。查看这篇关于在到期之前检测到期的博客文章:

基本上你需要两个步骤。首先,创建一个关于过期时间的索引

CREATE INDEX iExpiration ON default(exp_datetime) USING GSI;
我不认为这是绝对必要的,但它会提高性能

其次,只需运行一个N1QL查询,如下所示(它将列出将在未来30秒内过期的文档)

选择元(默认).id*
默认
其中日期差(STR_至UTC(exp_datetime),MILLIS_至UTC(DATE_ADD_MILLIS(现在是MILLIS(),30,“秒”),“秒”)<30
STR_TO_UTC(exp_datetime)不丢失;

因此,如果您想找到每个文档的TTL,可能需要从当前时间中减去
exp\u datetime
(我相信这是
CLOCK\u MILLIS()
)。

您没有指定Couchbase Server的哪个版本,但这个答案假设您使用的是4.x,并且可以运行N1QL查询

我认为你的思路是对的。查看这篇关于在到期之前检测到期的博客文章:

基本上你需要两个步骤。首先,创建一个关于过期时间的索引

CREATE INDEX iExpiration ON default(exp_datetime) USING GSI;
我不认为这是绝对必要的,但它会提高性能

其次,只需运行一个N1QL查询,如下所示(它将列出将在未来30秒内过期的文档)

选择元(默认).id*
默认
其中日期差(STR_至UTC(exp_datetime),MILLIS_至UTC(DATE_ADD_MILLIS(现在是MILLIS(),30,“秒”),“秒”)<30
STR_TO_UTC(exp_datetime)不丢失;

因此,如果您想找到每个文档的TTL,您可能需要从当前时间中减去
exp\u datetime
(我相信这是
CLOCK\u MILLIS()
)。

请注意,这里必须为每个文档显式添加和维护
exp\u datetime
。Couchbase不会通过普通方式自动公开实际的TTL。请注意,
exp\u datetime
此处必须为每个文档明确添加和维护。Couchbase不会通过普通方式自动公开实际TTL。