【问题标题】:CouchDB sorting on a group of complex keysCouchDB 对一组复杂键进行排序
【发布时间】:2012-03-10 17:21:09
【问题描述】:

我很难找出如何查询多个键和按日期排序。 其实我想翻译以下SQL:

SELECT * FROM THREADS WHERE GROUP_ID IN (1,2,3) ORDER BY THREAD.DATE;

到目前为止,我正在传递查询 keys=[1,2,3] 这将返回线程,但它们未排序。

我也可以对它们进行排序,但只能使用一个 GROUP_ID(作为键:[group_id, date]): startkey=[GROUP_ID,{}]&endkey=[GROUP_ID]&descending=true

但是,我无法合并它。

有人知道解决办法吗?

非常感谢,

帕特里克

【问题讨论】:

    标签: couchdb


    【解决方案1】:

    在这样的日子里,我根本无法解决帕特里克的问题 :) 尽管您的关系问题没有简单的解决方案,但您可以尝试使用列表设计 (couchDB >= 0.10) 的解决方法:

    {
      "_id": "_design/test",
      "views": {
        "by_date": {
          "map": "function(doc) {
            emit(doc.date, doc);
          }"
        }
      },
      "lists" : {
        "filter_groups" : "function(head, req) { 
          start({
            'headers': {
              'Content-Type': 'application/json'
            }
          });
          var groups = JSON.parse(req.query['groups'] || '[]');
          var row;
          var res = {rows:[]};
          while (row = getRow()) {
            if (groups.indexOf(row.value.group_id) > -1) {
              res.rows.push(row);
            }
          } 
          send(JSON.stringify(res));
        }",
      }
    }
    

    你这样查询它: curl -g $DB/_design/test/_list/filter_groups/by_date?groups=[1,3] ,传递需要的 group_id 数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 2021-01-02
      • 2012-03-08
      • 1970-01-01
      相关资源
      最近更新 更多