CouchDB分页和排序

时间:2016-10-07 09:38:54

标签: sorting pagination couchdb

所以我在CouchDB文档上使用这种方法来执行分页。

  • 从视图中请求rows_per_page + 1行
  • 显示rows_per_page行,存储+ 1行作为next_startkey和next_startkey_docid
  • 作为页面信息,请保持startkey和next_startkey
  • 使用next_ *值 创建下一个链接,并使用其他链接创建上一个链接

我不明白的一件事是,如何使用这种方法执行排序,假设每个文档都有最后更新的时间戳,我想使用该字段进行排序,而不是使用id进行排序。

1 个答案:

答案 0 :(得分:0)

首先,排序将始终在 KEYS 上。 通过查询密钥为_id的表来查询_all_docs结果。

[
  {
    "key": "my_first_id",
    "value": {}
  },
  {
    "key": "my_second_id",
    "value": {}
  }
]

因此,如果要对 _id 之外的其他字段进行排序,则需要使用Map / Reduce(Views)例如,您可以创建一个视图,其中键是 updatedAt 字段。 这将导致类似这样的事情:

[
  {
    "key": "1475858068",
    "value": {}
  },
  {
    "key": "1475553268",
    "value": {}
  }
]

因此,通过对键进行排序会产生排序:)