Dnes jsem narazil na svou chybu a napadlo mě, že se zde podělím o řešení, pro případ, že by se někdo setkal s podobným problémem.
Vyvolání mapReduce problém způsobovala metoda:
MapReduceOutput sum = collection
.mapReduce(MAP, REDUCE_MAX, null, null);
Podívejte se na Javadoc pro tuto metodu:
/**
* 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
*/
Uvádí, že příkaz je spuštěn pomocí REPLACE jako výstupní režim a pokud chcete dočasnou kolekci, outputTarget by měl být null .
Bohužel však konstruktorMapReduceCommand , který se používá v mapReduce metoda umožňuje pouze outputTarget mít hodnotu null, pokud OutputType je nastaveno na INLINE (podle Javadoc z MapReduceCommand.getOutputTarget() ).
Takže vše, co jsem musel udělat, je změnit třetí parametr z null na nějaký String , asi takhle:
MapReduceOutput sum = collection
.mapReduce(MAP, REDUCE_MAX, "tmp", null);
To byl jako jediný parametr, se kterým jsem si nehrál, když jsem se snažil přijít na to, proč to nefunguje. Doufám, že to někomu může pomoci.