Vandaag stuitte ik op mijn fout en dacht ik de oplossing hier te delen, voor het geval iemand een soortgelijk probleem tegenkomt.
De aanroep van de mapReduce
methode veroorzaakte het probleem:
MapReduceOutput sum = collection
.mapReduce(MAP, REDUCE_MAX, null, null);
Bekijk de Javadoc voor deze methode:
/**
* 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
*/
Er staat dat de opdracht wordt uitgevoerd met REPLACE
als uitvoermodus en dat als men een tijdelijke verzameling wil, de outputTarget
moet null
zijn .
Helaas echter, de constructorMapReduceCommand
, die wordt gebruikt in de mapReduce
methode, staat alleen de outputTarget
. toe nullable zijn als het OutputType
is ingesteld op INLINE
(volgens de Javadoc van MapReduceCommand.getOutputTarget()
).
Dus ik hoefde alleen maar de derde parameter te veranderen van null
naar een String
, zoals zo:
MapReduceOutput sum = collection
.mapReduce(MAP, REDUCE_MAX, "tmp", null);
Dit was de enige parameter waar ik nog niet mee had gespeeld toen ik probeerde uit te zoeken waarom het niet werkte. Ik hoop dat iemand dit nuttig vindt.