Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting CouchDB中的上一个和下一个文档_Sorting_Timestamp_Couchdb - Fatal编程技术网

Sorting CouchDB中的上一个和下一个文档

Sorting CouchDB中的上一个和下一个文档,sorting,timestamp,couchdb,Sorting,Timestamp,Couchdb,我有一个包含带有浮点时间戳的项目的数据库。当用户访问url为/item/id/的页面时,应显示具有相应标识符的文档(这很容易),以及按时间顺序指向上一个和下一个文档的链接(如果存在) 这些链接必须是持久的,并且项目往往会根据外部条件在不同的时间戳出现和消失,因此我没有选择在URL中缓存一个或两个标识符 现在,我正在使用一个按时间戳排序的视图进行两个查询(一个降序,一个升序),以获取上一个和下一个文档 我可以用更少的请求来完成吗 如果对象的时间戳非常接近,浮点精度恐怕会造成混乱。我怎样才能避免这

我有一个包含带有浮点时间戳的项目的数据库。当用户访问url为
/item/id/
的页面时,应显示具有相应标识符的文档(这很容易),以及按时间顺序指向上一个和下一个文档的链接(如果存在)

这些链接必须是持久的,并且项目往往会根据外部条件在不同的时间戳出现和消失,因此我没有选择在URL中缓存一个或两个标识符

现在,我正在使用一个按时间戳排序的视图进行两个查询(一个降序,一个升序),以获取上一个和下一个文档

  • 我可以用更少的请求来完成吗
  • 如果对象的时间戳非常接近,浮点精度恐怕会造成混乱。我怎样才能避免这种情况

是否可以在数据库中为每个文档维护上一个/下一个文档?
这取决于您的读/写比率,但在每次插入/删除时执行这两个查询可能比在每次页面查看时更快。

不确定您是否仍在解决此问题,但如果是,您可以尝试以下方法:

  • 将时间戳作为日期数组输出:
    [2012,04,30,03,20,35]
  • 使用
    ?开始键=[2012,04,30,03,20,0]&结束键=[2012,04,30,03,20,60]
    来 获取索引中最后一分钟(或小时、天等)的键值范围。 取决于发射的内容的粒度)
  • 在客户机代码中,使用要查找其同级的文档的时间戳,然后从数组/哈希表/字典/向量/任何内容中获取其同级
  • 这将使您简化为一个get请求,并权衡更大的响应大小。但是,如果您使用HTTP
    if Not Match
    /
    ETag
    头和一些客户端缓存,您可能只需要请求一个更大范围的文档即可——缓存一个日或周范围的列表,并使用缓存的数组/任何内容,以便以后查找时对服务器的点击更轻(因为它只会检查
    ETag
    值,并返回“仅”未修改的
    304响应代码

    FWIW,这也适用于Couchbase Server 2.0 API(因为它基于CouchDB视图的system/API)

    希望有帮助