2012-04-11 11 views
5

मुझे पता है कि अंतर्निहित _stats फ़ंक्शन है जो आपको योग, गणना, न्यूनतम, अधिकतम और sumsqr देता है। मैं क्या जानना चाहता हूं कि मानचित्र में अधिकतम अधिकतम गणना कैसे करें। मैं एक कम समारोह के साथ नहीं आ सकता जो कुछ और जानकारी के बिना काम करेगा।कॉच डीबी में मानचित्र-कमी का उपयोग करके अधिकतम मूल्य की गणना कैसे करें?

एकमात्र चीज जिसे मैं सोच सकता हूं वह है मूल्य पर सॉर्टिंग का उपयोग करना और पहला मान चुनें।

मेरे मानचित्र समारोह इस तरह दिखता है:

function(doc){ 
    emit(null, doc.value); 
} 
+1

आपका वैकल्पिक हल (मूल्य से छंटाई और पहली या अंतिम प्रविष्टि उठा) द्वारा हल किया जा सकता है अपने नक्शे समारोह के साथ काम नहीं करेगा - एक दृश्य के प्रमुख के अनुसार क्रमबद्ध किया जाता है, तो आपको एक कुंजी के रूप में शून्य के बजाय doc.value को उत्सर्जित करने की आवश्यकता होगी। लेकिन इस तरह के कामकाज के बजाय आप एक उचित कमी समारोह के साथ अपने मानचित्र समारोह को जोड़ सकते हैं। – titanoboa

उत्तर

8

CouchDB विकि एक सरल example for sum प्रदान करता है।

मूल्यों के योग को वापस करने के बजाय, अधिकतम के लिए फ़ंक्शन को कम करने के लिए मान सरणी को अधिकतम करना चाहिए। चूंकि अधिकतम गणना करना कम्यूटेटिव, सहयोगी आदि है, इसलिए आपको पुनरावृत्ति के बारे में चिंता करने की आवश्यकता नहीं है।

function (key, values, rereduce) { 
    // Return the maximum numeric value. 
    var max = -Infinity 
    for(var i = 0; i < values.length; i++) 
     if(typeof values[i] == 'number') 
      max = Math.max(values[i], max) 
    return max 
} 
+0

मैंने आपके उत्तर को विस्तारित करने की स्वतंत्रता ली, जिसमें मुझे यकीन है कि पीपीसी-कोडर की समस्या का समाधान होगा। – JasonSmith

+1

क्या पंक्तियों के सेट के लिए अधिकतम तिथि खोजने का कोई तरीका है? – user2601010

10

यह भी निम्नलिखित

function (key, values, rereduce) { 
    return Math.max.apply({}, values); 
} 
संबंधित मुद्दे