2012-02-08 13 views
6

क्यों निम्नलिखित काम नहीं करता है किसी को भी मेरे लिए व्याख्या कर सकते हैं:CouchDB समूह स्तर और कुंजी रेंज

निम्नलिखित दस्तावेज़ संरचना मान लिया जाये:

{ 
    "_id": "520fb089a6cb538b1843cdf3cca39a15", 
    "_rev": "2-f96c27d19bf6cb10268d6d1c34799931", 
    "type": "nosql", 
    "location": "AZ", 
    "date": "2012/03/01 00:00:00", 
    "amount": 1500 
} 

और एक मानचित्र समारोह इतना तरह परिभाषित:

function(doc) { 
    var saleDate = new Date(doc.date); 
    emit([doc.location,saleDate.getFullYear(),saleDate.getMonth()+1],doc.amount); 
} 

और reducer के लिए _sum फ़ंक्शन में निर्मित का उपयोग करना।

जब आप (समूह के साथ = true) इस पर अमल आप इस तरह के परिणाम प्राप्त:

{"rows":[ 
{"key":["AZ",2012,2],"value":224}, 
{"key":["AZ",2012,3],"value":1500}, 
{"key":["WA",2011,12],"value":1965}, 
{"key":["WA",2012,1],"value":358} 
]} 

अब अगर आप कुछ इस तरह करने के लिए क्वेरी को बदलें:

http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2 

आप इस तरह के परिणाम प्राप्त :

{"rows":[ 
{"key":["AZ",2012],"value":1724}, 
{"key":["WA",2011],"value":1965}, 
{"key":["WA",2012],"value":358} 
]} 
कि मन में साथ

तो अगर मैं "वाशिंगटन" के लिए 2011 में सभी बिक्री पता लगाने के लिए मैं exe नहीं कर सकता है चाहता था प्यारा कुछ इस तरह:

http://127.0.0.1:5984/default/_design/nosql/_view/nosql_test?group_level=2&key=["WA",2011] 

यह उदाहरण उपयोगी वीडियो से NoSQL टेप पर लिया गया है।

http://nosqltapes.com/video/understanding-mapreduce-with-mike-miller

उत्तर

8

तुम हमेशा क्योंकि छानने नहींreduce पर map के परिणामों पर किया जाता है,, चाबियों का एक सीमा देने के लिए की जरूरत है।

उदाहरण के लिए, निम्नलिखित मानकों काम करना चाहिए (अगर ठीक से url- एन्कोडेड):

?group_level=2&startkey=["WA",2011]&endkey=["WA",2011,{}] 

आप view collation के बारे में समझने के लिए यह कैसे काम करता पढ़ सकते हैं।

+0

हाँ जो काम करता है और अब और अधिक समझ में आता है। ViewCollation गाइड के लिंक के लिए भी धन्यवाद। – eggsy84

+1

मुझे लगता है कि यह कम चरण के परिणामों से किया गया था लेकिन अब समझ में आता है कि यह मानचित्र फ़ंक्शन से परिणामों से किया गया है। सहायता के लिए धन्यवाद :) – eggsy84