下面的视图功能用于发出一些条目:
function(doc) {emit(null,{"date":doc.date,"title":doc.title,"txt":doc.txt});}
{"total_rows":7,"offset":0,"rows":[
{"id":"67ebe3755be4edf5c4edf0d96f0023eb","key":null,"value":{"date":"Dec 12,2012","title":"test1","txt":"this is just a test"}},
{"id":"67ebe3755be4edf5c4edf0d96f003120","key":null,"value":{"date":"Nov 11,2012","title":"test2","txt":"this is just a test2"}},
{"id":"67ebe3755be4edf5c4edf0d96f003869","key":null,"value":{"date":"Dec 22,2012","title":"test4","txt":"this is just a test4"}},
{"id":"67ebe3755be4edf5c4edf0d96f003cfd","key":null,"value":{"date":"Aug 21,2010","title":"test5","txt":"this is just a test5"}},
{"id":"67ebe3755be4edf5c4edf0d96f004466","key":null,"value":{"date":"Nov 1, 2010","title":"test6","txt":"this is just a test6"}},
{"id":"67ebe3755be4edf5c4edf0d96f004d9c","key":null,"value":{"date":"Aug 15,2010","title":"test7","txt":"this is just a test7"}},
{"id":"67ebe3755be4edf5c4edf0d96f005d04","key":null,"value":{"date":"Feb 28,2012","title":"test3","txt":"this is just a test3"}}
]}
使用CouchDB功能按年份和月份对条目进行分组的最佳方法是什么?
(以格式化输出JSON格式:)
{
"2012":{
"Feb":[{"date":"Feb 28,2012","title":"test3","txt":"this is just a test3"}],
"Nov":[{"date":"Nov 11,2012","title":"test2","txt":"this is just a test2"}],
"Dec":[{"date":"Dec 12,2012","title":"test1","txt":"this is just a test"},
{"date":"Dec 22,2012","title":"test4","txt":"this is just a test4"}]
},
"2010":{
"Aug":[{"date":"Aug 15,2010","title":"test7","txt":"this is just a test7"},
{"date":"Aug 21,2010","title":"test5","txt":"this is just a test5"}],
"Nov":[{"date":"Nov 1, 2010","title":"test6","txt":"this is just a test6"}]
}
}
答案 0 :(得分:3)
你的地图功能应该是这样的:
function (doc) {
var date = new Date(doc.date);
emit([date.getFullYear(), date.getMonth()], doc);
}
然后,当您查询视图数据时,它将按日期排序。如果你添加“descending = true”,那么你将把它们向后排序。如果你添加“?startKey = [2012,”“]& endkey = [2012]& descending = true”,那么你将获得2012 doc.date的所有文件