MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MONGODB में CSV में डेटा को विभाजित और गिनते समय कोई समस्या है (कॉलमनाम जैसे कॉलम में शून्य मान होने पर :)

मुझे लगता है कि मैंने समस्या का पता लगा लिया है। निम्नलिखित इनपुट डेटा पर विचार करें:

{_id: 1, characters: ""}
{_id: 2, characters: "a, b, c"}
{_id: 3, characters: "a, b, c"}

> db.collection.mapReduce(map, reduce, {out: { inline : 1}})
"exception: reduce -> multiple not supported yet"

यह त्रुटि संदेश इंगित करता है कि वर्तमान में MR का उपयोग मानों की एक सरणी को वापस करने के लिए नहीं किया जा सकता है। यदि आप अपने कम करने के कार्य पर एक नज़र डालते हैं:

reduce = function(key, values) {
    return values;
}

"मान" कुंजी द्वारा समूहीकृत "सरणी। लम्बाई" की एक सरणी होगी। चूंकि कुंजी "ए, बी, सी" को दो बार उत्सर्जित किया गया था (एक ही तर्क "" के साथ कई दस्तावेजों के लिए अनुसरण करता है), मान (मेरे उदाहरण में) दो तत्वों के साथ एक सरणी है, और एमआर सरणी वापस नहीं कर सकता है।

यदि किसी विशेष कुंजी के लिए एक एकल दस्तावेज़ उत्सर्जित होता है (जो कि _id:1 के मामले में है), तो कम करें फ़ंक्शन को नहीं कहा जाएगा। यह बताता है कि जब आप शून्य वर्ण नहीं छोड़ते हैं तो आपको त्रुटि संदेश क्यों नहीं मिलता है।

इस MR ऑपरेशन को काम करने के लिए, आपको {characters:""} के लिए एक ही दस्तावेज़ निकालने की आवश्यकता है। यदि आप अपने डेटा के बारे में अतिरिक्त जानकारी प्रदान करते हैं, तो हम समाधान खोजने में मदद कर सकते हैं।

संपादित करें:

निम्न कम करें फ़ंक्शन यह सुनिश्चित करेगा कि एक सरणी के बजाय एक मान लौटाया जाए:

reduce = function(key, values) {
        return values[0];
}

संपादित करें 2:

त्रुटि को रोकने के लिए, "errmsg":"अपवाद:नक्शा आह्वान विफल:JS त्रुटि:लेखन त्रुटि:this.characters में कोई गुण नहीं है nofile_b:1", "code":9014...

map = function() { 
    if (this.characters != null){ 
         var array = this.characters.split(','); 
         emit(this.characters, array.length);
    } 
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक mongoDB दस्तावेज़ में एक सबफ़ील्ड को अपडेट करने के लिए FindOne और सेव का उपयोग करें

  2. नेस्टेड दस्तावेज़ में एक फ़ील्ड पर नेवला सूचकांक

  3. Ansible . का उपयोग करके MongoDB की तैनाती और रखरखाव

  4. MongoDB के लिए सामान्य विफलता परिदृश्यों को ठीक करने के लिए बैकअप का उपयोग करना

  5. MongoDB एकत्रीकरण क्वेरी में $ संकेत का उपयोग कैसे करें?