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

Punya masalah saat membagi dan menghitung data dalam CSV di MONGODB (Memiliki nilai Null di kolom seperti nama kolom :)

Saya pikir saya telah menemukan masalahnya. Perhatikan data masukan berikut:

{_id: 1, characters: ""}
{_id: 2, characters: "a, b, c"}
{_id: 3, characters: "a, b, c"}

> db.collection.mapReduce(map, reduce, {out: { inline : 1}})
"exception: reduce -> multiple not supported yet"

Pesan kesalahan ini menunjukkan bahwa MR saat ini tidak dapat digunakan untuk mengembalikan array nilai. Jika Anda melihat fungsi pengurangan Anda:

reduce = function(key, values) {
    return values;
}

"values" akan berupa larik "array.length" yang dikelompokkan berdasarkan kunci. Karena kunci "a,b,c" dipancarkan dua kali (logika yang sama mengikuti beberapa dokumen dengan ""), nilai (dalam contoh saya) adalah larik dengan dua elemen, dan MR tidak dapat mengembalikan larik.

Jika satu dokumen dikeluarkan untuk kunci tertentu (yang merupakan kasus untuk _id:1), fungsi pengurangan tidak akan dipanggil. Ini menjelaskan mengapa Anda tidak mendapatkan pesan kesalahan saat Anda tidak mengeluarkan karakter nol.

Agar operasi MR ini berfungsi, Anda perlu mengeluarkan satu dokumen untuk {karakter:""}. Jika Anda memberikan informasi tambahan tentang data Anda, kami mungkin dapat membantu menemukan solusi.

EDIT:

Fungsi pengurangan berikut akan memastikan bahwa nilai tunggal, bukan array, dikembalikan:

reduce = function(key, values) {
        return values[0];
}

EDIT 2:

Untuk mencegah kesalahan, "errmsg" :"pengecualian:pemanggilan peta gagal:JS Error:TypeError:this.characters tidak memiliki properti nofile_b:1", "code" :9014...

map = function() { 
    if (this.characters != null){ 
         var array = this.characters.split(','); 
         emit(this.characters, array.length);
    } 
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo DB dengan C# - dokumen ditambahkan terlepas dari transaksi

  2. Mengapa Spring Data MongoDB tidak dapat membuat instance struktur tipe bersarang ini?

  3. Bagaimana cara menghapus elemen array di mongodb?

  4. MongoDB - DBRef

  5. Konversi dari String ke MongoDB ObjectID