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;
}