我可以在couchbase文档的成员上使用TTL吗?

Fil*_*und 1 couchbase

我正在设计我的后端.我有一个json数组/队列/东西,我只需要任何最多2周的数据,这是连续附加到.我只想从这个"队列"中删除,而不是从容器文档中删除.我可以使用TTL,还是TTL只能用于整个文档?

有一个更好的方法吗?我应该将它们作为单独的文档存储在每日或每小时的数组中吗?

运行couchbase 2.2.

sca*_*ved 5

Couchbase中的TTL仅适用于整个文档,不可能使文档的子集失效.就像你说的那样,你可以随时拥有不同到期时间的单独文档,在这些文档中你有一个类型,日期,然后是数据数组作为元素.

然后使用这样的视图:

function (doc, meta) {
  if(meta.type == "json") {
    if(doc.type == "ordered_data") {
      if(doc.date) {
        emit(dateToArray(doc.date)); 
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以按日期排序所有相关数据(标记降序设置为true),它还允许您的应用程序通过传入一个或多个键来选择特定日期.即选择日期范围为2天,1周等.当文档到期时,它将在更新时从视图中删除(根据您的陈旧参数加上操作一秒/时间而变化).

然后,您可以在应用程序层执行所需的任何连接或额外处理.还有其他选择,但对我来说,这将是解决问题的最明智的方法,任何问题只是评论,我们会再试一次.

Ps你的阵列有多大?如果它们非常大,那么也许你需要看一个不同的技术或方法来解决问题.