【问题标题】:How to get the latest document in couchbase bucket?如何获取 couchbase 存储桶中的最新文档?
【发布时间】:2014-05-19 23:28:57
【问题描述】:

我的 couchbase-db 中有一个活动桶,我需要检索不同类型的最新文档,我最初的方法是:

文档格式:[ id , { val.time ,val.type, val.load } ]

然后我编写了不同的视图来映射特定的 val.type 并使用 reduce 来获取最新的 val.time,但是我遇到了视图未更新的问题(原因显然 Map 仅在 new 或 changed 上调用文档,这种方法需要映射和缩减所有文档。)

Couchbase (NoSQL) 数据库上基于时间的数据的最佳实践/方法是什么?

【问题讨论】:

    标签: couchbase couchbase-lite couchbase-view nosql


    【解决方案1】:

    您可以通过如下简单视图按时间访问文档:

    1. 将您的时间转换为整数值。例如使用parse() 方法。 http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm

    2. 将此整数值用作视图的键。然后,您可以访问第一个或最后一个文档。

    3. 如果您总是需要最后一个文档,则否定时间值会更快,因此最大时间位于索引的开头。

    【讨论】:

    • 感谢您的回答 DHK,我认为主要问题是我的视图将适用于少数文档 function (doc, meta) { if ( doc.type === "task-manager" && doc.time ) { emit(parseInt(doc.time),doc); } }代码>。我完全迷路了。
    【解决方案2】:

    如果您使用的是开发设计文档,预计将新密钥添加到您的存储桶中可能不会对视图产生影响。由于存储桶中只有一部分键进入 Map/Reduce 管道,因此添加未进入该子集的键不会触发视图更新。

    要么在产品设计文档上评估它(通过单击“发布”按钮),要么尝试添加更多键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      相关资源
      最近更新 更多