在couchbase中,您无法对缩小后的结果进行排序,因此您无法直接获得某项内容的“前10名”。在couchbase视图中,值总是按键排序。最好的办法是:
- 查询您的观点,即返回键 - 值对:
tag_name - count_value
下令tag_name
- 创建一个运行每隔N分钟的工作,从[1],对其排序得到的结果,并写入排序结果分开键(即“Top10Tags”)。
- 在您的应用程序中,您可以查询关键Top10标签。
这可能会减少流量,但结果可能已过时。你也可以在与couchbase运行的同一台服务器上创建“作业”(即编写小型的node.js应用程序或其他东西),并且它仅回送流量和小的CPU数量,以便每N分钟排序一次。
另外,如果你使用_count减少功能,您不需要发出任何数字,只使用空:
function(doc, meta) {
if(meta.type === "json" && doc.type === 'log') {
emit(doc.tag, null);
}
}
如果你想有多个标签,如
标记的文档
{
"type": "log",
"tags": ["tag1","tag2","tag3"]
}
你的地图功能应该是:有关TOP10榜单
function(doc, meta) {
if(meta.type === "json" && doc.type === 'log') {
for(var i = 0; i < doc.tags.length; i++){
emit(doc.tags[i], null);
}
}
}
一两件事。如果您不想将其存储在磁盘上,则可以将其存储在memcache存储桶中。
This? http://stackoverflow.com/questions/2817703/sorting-couchdb-views-by-value – WiredPrairie 2013-04-11 22:34:17