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

MongoDB जावा ड्राइवर का उपयोग करके MapReduce BSONElement अभिकथन के लिए गलत प्रकार के साथ विफल रहता है

आज मैं अपनी गलती पर ठोकर खाई और समाधान यहां साझा करने का विचार किया, अगर किसी को भी इसी तरह की समस्या का सामना करना पड़ता है।

mapReduce . का आह्वान विधि समस्या पैदा कर रही थी:

MapReduceOutput sum = collection
                .mapReduce(MAP, REDUCE_MAX, null, null);

इस विधि के लिए Javadoc पर एक नज़र डालें:

/**
 * performs a map reduce operation
 * Runs the command in REPLACE output mode (saves to named collection)
 *
 * @param map
 *            map function in javascript code
 * @param outputTarget
 *            optional - leave null if want to use temp collection
 * @param reduce
 *            reduce function in javascript code
 * @param query
 *            to match
 * @return
 * @throws MongoException
 * @dochub mapreduce
 */

यह बताता है कि कमांड को REPLACE . का उपयोग करके निष्पादित किया जाता है आउटपुट मोड के रूप में और यदि कोई अस्थायी संग्रह चाहता है, तो outputTarget nullहोना चाहिए ।

दुर्भाग्य से हालांकि, कंस्ट्रक्टरMapReduceCommand , जिसका उपयोग mapReduce . में किया जाता है विधि, केवल outputTarget . की अनुमति देती है यदि OutputType INLINE पर सेट है (MapReduceCommand.getOutputTarget() के Javadoc के अनुसार )।

तो मुझे बस इतना करना है कि तीसरे पैरामीटर को null . से बदलना है कुछ String . के लिए , इस तरह:

MapReduceOutput sum = collection
                .mapReduce(MAP, REDUCE_MAX, "tmp", null);

यह एकमात्र पैरामीटर की तरह था जिसे मैंने यह पता लगाने की कोशिश करते हुए नहीं खेला था कि यह क्यों काम नहीं करता है। मुझे आशा है कि किसी को यह मददगार लग सकता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. दोहराव वाली चीजें करने वाली एकाधिक नोड प्रक्रियाओं से कैसे बचें?

  2. जेस्ट चलाते समय एकाधिक सर्वर इंस्टेंस प्रयास

  3. मोंगोडीबी $कन्वर्ट

  4. प्रतिक्रिया ऐप में मोंगोडब से सरल कनेक्शन

  5. फ्लास्क और अजगर के साथ मोंगो का उपयोग करना