3

我有包含“日期”和“组”字段的文档。这是我的观点:

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

这个简单的解决方案没有进入我的脑海。:(

4

3 回答 3

1

Pankaj,将您发出的密钥的顺序切换为:

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

然后你可以在查询视图时传入一个开始键和一个结束键。为要为其提取数据的每个组执行单独的查询可能会更容易。数据将按日期排序。

我现在正在出去,但如果不清楚,可以在我回来时详细说明。

于 2012-04-13T23:59:37.653 回答
0

为什么不?

function(doc) {
  if (doc.date && ["group1", "group2"].indexOf(doc.group) !== -1)) {
    emit([doc.date, doc.group], null);
  }
}
于 2012-04-13T19:11:17.603 回答
0

为此,您需要一个特定的视图:

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

您使用 query 查询(大概在列表函数中)descending=true

于 2012-04-13T19:12:44.420 回答