MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MapReduce menggunakan MongoDB Java Driver gagal dengan tipe yang salah untuk pernyataan BSONElement

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di Flask, ubah bentuk objek POST menjadi representasi yang cocok untuk mongodb

  2. Butuh saran untuk merancang rekomendasi artis

  3. Meteor:mengunggah file dari klien ke koleksi Mongo vs sistem file vs GridFS

  4. Mewarisi skema luwak

  5. MongoDB - Agregasi - Untuk mendapatkan item unik dalam array