通过多个键查看从CouchDB获取最新文档

时间:2015-02-20 21:47:39

标签: couchdb

我需要通过查看具有多个键的视图来从CouchDB获取文档,例如keys=["key1", "key2","key3"]。 文件看起来像这样:

{
   "_id": "142410131701",
   "_rev": "1-6cac8838a4dfc2308f9d06001a899f50", 
   "s": [
       "key1", "key2", "key3"
   ]
}

这很好用。 我面临的问题是如何在数据库中获取最新的文档?我的文档_id实际上是一个Unix Epoch,但我无法弄清楚如何通过id排序结果。 看起来CouchDB返回btree中匹配key1的第一个结果,然后返回匹配key2等的结果,但最新的文档不是第一个返回的结果。 尝试将_id添加到键也不起作用。

我现在用List函数解决了这个问题,它通过_id对结果进行排序,但我想知道是否有更简单有效的解决方案。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果你将_id添加到它必须工作的键(当然,你必须将它添加为键数组的第一个参数,这显然会使这个视图在你的情况下无用)

但是,如果你想要一个已经按_id索引文档的自动视图并对它们进行排序,在你的情况下,从旧版本到更新版本,它是_all_docs端点,就像一个视图一样工作

您的问题的答案是:

curl http://couch.db.com/database/_all_docs?descending=true&include_docs=true&limit=15

这将为您提供15个最新的文档,其响应或多或少如下:

{
  "rows": [
    {
       "key": "the-id",
       "id": "the-id",
       "value": {"rev": "the-rev"},
       "doc": {
         "your-document": "goes here"
       }
    },
    ...
  ]
}