MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MapReduce przy użyciu sterownika Java MongoDB kończy się niepowodzeniem z powodu nieprawidłowego typu asercji BSONElement

Dzisiaj natknąłem się na swój błąd i postanowiłem podzielić się rozwiązaniem tutaj, na wypadek, gdyby ktoś napotkał podobny problem.

Wywołanie mapReduce metoda powodowała problem:

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

Zapoznaj się z dokumentacją Javadoc dotyczącą tej metody:

/**
 * 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
 */

Stwierdza, że ​​polecenie jest wykonywane przy użyciu REPLACE jako tryb wyjściowy i jeśli ktoś chce tymczasowej kolekcji, outputTarget powinno być null .

Niestety, konstruktorMapReduceCommand , który jest używany w mapReduce pozwala tylko na outputTarget mieć wartość null, jeśli OutputType jest ustawiona na INLINE (zgodnie z dokumentacją Javadoc MapReduceCommand.getOutputTarget() ).

Wszystko, co musiałem zrobić, to zmienić trzeci parametr z null do jakiegoś String , jak tak:

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

To był jedyny parametr, z którym nie bawiłem się, próbując dowiedzieć się, dlaczego to nie działa. Mam nadzieję, że komuś się to przyda.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak użyć pymongo, aby połączyć się z istniejącą kolekcją dokumentów/bazą danych?

  2. Znajdź wartości, które nie zawierają liczb w SQL

  3. Mongoose Saved _id's jako ciąg zamiast ObjectId

  4. MONGO otrzymuje tylko nazwy dokumentów, ale nie całe dokumenty

  5. Jak odwołać się do innego schematu w moim schemacie Mongoose?