couchdb - 查询多个特定键后按日期排序

标签 couchdb

文档结构:

{
  "Type":"post"
  "LastModified":"2010-11-01 21:55",
  "CategoryID":3,
  "ID":12
}

拥有一堆不同类别的不同博士后非常棒。但是,当选择类别 3 和 5 中的文档时,我似乎无法弄清楚如何创建一个返回按日期排序的文档的 View 。类别未知,限制查询应该仍然有效。

我尝试了不同的 View 方法,但没有一种方法能够接近达到预期的结果。

在 SQL 中,可能可以通过以下方式完成:

SELECT * FROM document WHERE document.CategoryID in (3,5) ORDER BY document.LastModified DESC;

我可以只查询这样的 View 所需的次数,手动对数据进行排序和分页:

function(doc) {
  emit(doc.CategoryID, doc.ID);
}

那么有谁知道是否可以避免这样做,而只是让 couchdb 变得更聪明一点?

最佳答案

我可以想到两种可能的解决方案。

  1. 同时发出 CategoryIDLastModified在 map 功能中。

    function(doc) {
        emit([doc.CategoryID, doc.LastModified], null);
    }
    

    现在您可以在 View 中查询 ?startkey=[3]&endkey=[3, {}]获取所有带有 CategoryID=3 的文档排序方式 LastModified 。要获取多个 CategoryID 的文档,您需要合并排序结果。

  2. 使用couchdb-lucene建立索引。 couchdb-lucene可以处理复杂的查询。

关于couchdb - 查询多个特定键后按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4127016/

相关文章:

ssl - 使用 SSL 启动 CouchDB

python - 使用 couchdb-python 管理 _users 中的用户

java - 我如何在 couchdb 中使用 OR 大小写查询

nginx - nginx proxy_pass 和 couchdb 的问题

MongoDB 会丢失数据而 CouchDB 不会吗?

javascript - CouchDB 和 Cloudant 安全

javascript - CouchDB - 映射函数中的变量

python - Mongodb 或 Couchdb 与 django 构建类似于顶级编码器的应用程序?

node.js - 使 Node 等待数据库调用完成

用于 facebook 洞察的 CouchDB 文档设计