Hari ini saya menemukan kesalahan saya dan berpikir untuk membagikan solusinya di sini, untuk berjaga-jaga jika seseorang mengalami masalah yang sama.
Pemanggilan mapReduce
metode yang menyebabkan masalah:
MapReduceOutput sum = collection
.mapReduce(MAP, REDUCE_MAX, null, null);
Lihat Javadoc untuk metode ini:
/**
* 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
*/
Ini menyatakan bahwa perintah dijalankan menggunakan REPLACE
sebagai mode keluaran dan jika seseorang menginginkan koleksi sementara, outputTarget
harus null
.
Sayangnya, konstruktorMapReduceCommand
, yang digunakan dalam mapReduce
metode, hanya mengizinkan outputTarget
menjadi nullable jika OutputType
diatur ke INLINE
(menurut Javadoc dari MapReduceCommand.getOutputTarget()
).
Jadi yang harus saya lakukan adalah mengubah parameter ketiga dari null
ke beberapa String
, seperti ini:
MapReduceOutput sum = collection
.mapReduce(MAP, REDUCE_MAX, "tmp", null);
Ini seperti satu-satunya parameter yang tidak saya mainkan ketika mencoba mencari tahu mengapa itu tidak berhasil. Saya harap seseorang mungkin menemukan ini membantu.