यह बस लिखित रूप में काम नहीं करेगा। मुख्य समस्या यहाँ है:key: {"ResultSet.Results.state": true}
. ResultSet.Results
एक सरणी है। जब आप ResultSet.Results.state
के बारे में पूछते हैं आप किसी प्रकार के for
. का अर्थ लगा रहे हैं यहां लूप किया जाए। group
कमांड बस इसके लिए सक्षम नहीं है।
इसके बजाय निम्नलिखित एम/आर आज़माएं:
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;
}
आपको एक finalize
भी लिखना होगा औसत के लिए।
finalize = function(key, value) {
if (value.count > 0)
value.avg_quality = value.quality / value.count;
return value;
}