Esto simplemente no funcionará como está escrito. El problema clave está aquí:key: {"ResultSet.Results.state": true} . ResultSet.Results es una matriz. Cuando solicita ResultSet.Results.state estás insinuando algún tipo de for bucle hacerse aquí. El group el comando simplemente no es capaz de hacer esto.
En su lugar, intente el siguiente M/R:
map = function() {
// Note that we emit once per result
foreach(var i in ResultSet.Results) {
key = this.ResultSet.Results[i];
value = { count: 1,
quality: this.ResultSet.Results[i].quality,
avg_quality: 0
};
emit(key, value);
}
}
reduce = function(key, values) {
// note that results has same fields as emitted value
var results = { count: 0, quality: 0, avg_quality: 0 };
foreach(var i in values){
results.count += values[i].count;
results.quality += values[i].quality;
// ignore avg_quality, we don't use it
}
return results;
}
También tendrás que escribir un finalize para el promedio.
finalize = function(key, value) {
if (value.count > 0)
value.avg_quality = value.quality / value.count;
return value;
}