Nosql CouchDB视图,使用数组键进行筛选

Nosql CouchDB视图,使用数组键进行筛选,nosql,mapreduce,couchdb,Nosql,Mapreduce,Couchdb,我发出了一个基于数组的键,其中包含2个项,为了减少这些项,我只使用了内置的_count函数 function (doc) { emit([ doc.Name, doc.Date], null); } 我想按单据日期过滤,同时仅根据单据名称组级别1对计数进行分组,例如2010年1月1日至2011年1月1日之间 /_view/test?group_level=1&startkey=[{},20100101]&endkey=[{},20110101] 但是,我上面使用的语法似

我发出了一个基于数组的键,其中包含2个项,为了减少这些项,我只使用了内置的_count函数

function (doc) {
  emit([ doc.Name, doc.Date], null); 
}
我想按单据日期过滤,同时仅根据单据名称组级别1对计数进行分组,例如2010年1月1日至2011年1月1日之间

/_view/test?group_level=1&startkey=[{},20100101]&endkey=[{},20110101]
但是,我上面使用的语法似乎不起作用。没有返回任何结果。我的印象是{}占位符用于匹配任何键。如果我输入一个特定的文档名,它会工作,但只过滤到该文档名

/_view/test?group_level=1&startkey=["MYDOC",20100101]&endkey=["MYDOC",20110101]
结果出来了,

{"rows":[
  {"key":["MYDOC"],"value":10}
]}

我根本不想筛选文档名,只想筛选基础日期范围。谢谢

为什么不能在视图输出中翻转名称和日期字段?排序/筛选的方式,如使用startkey/endkey,很大程度上依赖于键的顺序,因此可以快速进行。我只想按名称分组。因此,如果name是键数组中的第一个元素,则在group_level=1时,它被正确分组。如果日期是第一个,则group_level=1将仅按日期分组。显然couchDB实际上不支持这一点,所以我会找到一个解决方案。最好的解决方案可能是一个列表函数来执行这样的查询后处理。你说的“仅基于”是什么意思?您的意思是选择和计数的时间跨度应该不同吗?