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

通过多个键查看时从CouchDB获取最新文档,couchdb,Couchdb,我需要通过查看具有多个键的视图从CouchDB获取文档,例如keys=[key1,key2,key3]。 文档如下所示: { "_id": "142410131701", "_rev": "1-6cac8838a4dfc2308f9d06001a899f50", "s": [ "key1", "key2", "key3" ] } 这个很好用。 我面临的问题是如何在数据库中获取最新的文档?我的文档_id实际上是一个Unix时代,但我不知道如何获得按id排序

我需要通过查看具有多个键的视图从CouchDB获取文档,例如keys=[key1,key2,key3]。 文档如下所示:

{
   "_id": "142410131701",
   "_rev": "1-6cac8838a4dfc2308f9d06001a899f50", 
   "s": [
       "key1", "key2", "key3"
   ]
}
这个很好用。 我面临的问题是如何在数据库中获取最新的文档?我的文档_id实际上是一个Unix时代,但我不知道如何获得按id排序的结果。 看起来CouchDB在btree中首先返回与key1匹配的结果,然后返回与key2匹配的结果,等等,但是最新的文档不是第一个返回的。 试图将_id添加到密钥中也不起作用

我现在已经用一个列表函数解决了这个问题,该函数按_id对结果进行排序,但我想知道是否有更简单有效的解决方案。 提前谢谢

如果您将_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"
       }
    },
    ...
  ]
}

正如我所说,我需要过滤结果,而不是所有文档。问题是视图仅按第一个键排序,而不是按第二个键排序。但是,由于我需要使用starkey和endkey按“s”进行过滤,因此我无法颠倒顺序并将id放在第一位。