如何计算这样设置的文档中的所有唯一语言?
{
"type": "post",
"lang": "en",
"title": "one",
}
{
"type": "post",
"lang": "en",
"title": "two",
}
{
"type": "post",
"lang": "en",
"title": "three",
}
{
"type": "post",
"lang": "martian",
"title": "four",
}
Map可以是这样的
function map(doc, meta) {
if (meta.type !== "json") {
return;
}
var type = doc["type"];
if (!type || type !== "post") {
return;
}
var lang = doc["lang"];
if (!lang) {
return;
}
emit(lang, null);
}
我使用group_level
,组设置为true
。内置函数_count
返回每种语言的文档数量(en
的值为3,martian
的值为1)。如何将reduce重新应用到已减少的值?还是应该在客户端完成?
我会这样写你的地图逻辑:
function (doc, meta) {
if(meta.type == "json") {
if(doc.type && doc.type == "post") {
if(doc.lang) {
emit(doc.lang);
}
}
}
}
我认为它看起来更清晰,更容易理解。实际上,我会保留count reduce,而不是为这种用法编写一个新的reduce函数,正如您所说,只需在应用层进行过滤。