需要CouchDB的伎俩按日期排序和筛选组(Need a CouchDB trick to sort

2019-09-16 12:26发布

我有场“日期”和“组”文件。 这是我的看法:

byDateGroup: {
  map: function(doc) {
    if (doc.date && doc.group) {
      emit([doc.date, doc.group], null);
    }
  }
}

什么是这种等价查询:

select * from docs where group in ("group1", "group2") order by date desc

这个简单的解决方案是不进入我的头。 :(

Answer 1:

潘卡,切换你发射到这个键的顺序:

emit([doc.group, doc.date], doc);

然后,你可以在开始键和结束键查询视图时通过。 这可能是比较容易做,你想拉的数据为每个组一个单独的查询。 这些数据将按照日期排序。

我对我目前的出路,但能更详细我回来的时候,如果它是不明确的。



Answer 2:

为什么不?

function(doc) {
  if (doc.date && ["group1", "group2"].indexOf(doc.group) !== -1)) {
    emit([doc.date, doc.group], null);
  }
}


Answer 3:

你需要为这个特定的观点:

byDateGroup1Group2: {
  map: function(doc) {
    if (doc.date && doc.group && (doc.group === "group1" || doc.group === "group2") {
      emit(doc.date, doc);
    }
  }
}

您使用的查询查询(在列表功能大概) descending=true



文章来源: Need a CouchDB trick to sort by date and filter by group