假设我的CouchDB数据库中有一定数量的文档,我希望能够获得按与每个标记关联的文档数量排序的标记列表。文档的结构如下:
{
"name": "Document Name 1",
"description": "Document description",
"tags": ["tag1", "tag2", "tag3"]
}
我显然可以创建一个视图,列出每个标签和与每个标签相关联的一些文档,如下所示:
function(doc) {
if (doc.type == "Document") {
for (tag in doc.tags) {
emit(tag, 1)
}
}
};
function(keys, values, rereduce) {
return sum(values);
}
这种方法的问题是标签名称将是结果集中的关键字,因此我将无法按文档数量排序,也无法将结果限制为前X个标签。我觉得我错过了一些非常明显的东西,但仍然没有看到解决方案。
这里有几个链接可能会对你有所帮助:
按值排序CouchDB视图
http://geekiriki.blogspot.com/2010/08/couchdb-using-list-functions-to-sort.html