0

尝试从特定帐户列表中检索事件列表(使用帐户 ID)并按日期对这些事件进行排序。

这是我当前的地图功能:

function(doc) {
   if (doc.doc_type == 'event' && doc.account_id) {
      emit([doc.date_start,doc.account_id],doc);
   }
}

当在 Futon 中为所有帐户运行时,这会输出正确的数据,但是,我不清楚如何构建我的请求查询,或者我是否需要修改我的 map 函数来完成这个?重要的是事件在指定的帐户之一中,并且事件日期按顺序(降序)排序。

4

1 回答 1

0

你有两个选择:

  • 对每个帐户进行查询,并在客户端合并结果:

    function(doc) {
      if (doc.doc_type === 'event' && doc.account_id) {
        emit([doc.account_id, doc.date_start], 1);
      }
    }
    

    使用(正确的 url 编码?include_docs=true&startkey=["ACCOUNT_ID"]&endkey=["ACCOUNT_ID", {}]查询account_id. 合并既快速又简单,因为结果已经按日期排序。

  • 做一个查询,并在客户端对结果进行排序:

    function(doc) {
      if (doc.doc_type === 'event' && doc.account_id) {
        emit(doc.account_id, 1);
      }
    }
    

    用 查询?include_docs=true&keys=["ACCOUNT_ID1", "ACCOUNT_ID2", ...]。排序会变慢,因为结果是按account_id.

只有测试会告诉您什么是您的用例的最佳选择。

于 2012-05-15T06:26:32.453 回答