我的文件包含字段'date'和'group'。这是我的观点:
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
这个简单的解决方案并没有进入我的脑海。 :(
答案 0 :(得分:1)
Pankaj,将您发出的密钥的顺序切换为:
emit([doc.group, doc.date], doc);
然后,您可以在查询视图时传入开始键和结束键。为要为其提取数据的每个组执行单独查询可能更容易。数据将按日期排序。
我现在正在出去,但如果不清楚,我可以在回来时详细说明。
答案 1 :(得分:0)
为什么不呢?
function(doc) {
if (doc.date && ["group1", "group2"].indexOf(doc.group) !== -1)) {
emit([doc.date, doc.group], null);
}
}
答案 2 :(得分:0)
您需要一个特定的视图:
byDateGroup1Group2: {
map: function(doc) {
if (doc.date && doc.group && (doc.group === "group1" || doc.group === "group2") {
emit(doc.date, doc);
}
}
}
您使用查询descending=true
查询(可能在列表函数中)。