आज मैं अपनी गलती पर ठोकर खाई और समाधान यहां साझा करने का विचार किया, अगर किसी को भी इसी तरह की समस्या का सामना करना पड़ता है।
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);
यह एकमात्र पैरामीटर की तरह था जिसे मैंने यह पता लगाने की कोशिश करते हुए नहीं खेला था कि यह क्यों काम नहीं करता है। मुझे आशा है कि किसी को यह मददगार लग सकता है।