Ada beberapa masalah di sini:
1) Perlu diketahui bahwa MongoDB menyimpan semua dokumen menggunakan format BSON. Perhatikan juga bahwa spesifikasi BSON mengacu pada penyandian string UTF-8, bukan penyandian UTF-16.
Ref:http://bsonspec.org/#/specification
2) Semua driver, termasuk driver JavaScript di mongo shell, harus menangani string yang dikodekan sebagai UTF-8 dengan benar. (Jika tidak, maka itu adalah bug!) Banyak driver yang menangani UTF-16 dengan benar, juga, meskipun sejauh yang saya tahu, UTF-16 tidak didukung secara resmi.
3) Ketika saya menguji ini dengan driver Python, MongoDB berhasil memuat dan mengembalikan nilai string yang berisi pasangan kode UTF-16 yang rusak. Namun, saya tidak dapat memuat pasangan kode yang rusak menggunakan shell mongo, saya juga tidak dapat menyimpan string yang berisi pasangan kode yang rusak ke dalam variabel JavaScript di shell.
4) mapReduce() berjalan dengan benar pada data string menggunakan pasangan kode UTF-16 yang benar, tetapi akan menghasilkan kesalahan saat mencoba menjalankan mapReduce() pada data string yang berisi pasangan kode yang rusak.
Tampaknya mapReduce() gagal saat MongoDB mencoba mengonversi BSON ke variabel JavaScript untuk digunakan oleh mesin JavaScript.
5) Saya telah mengajukan masalah Jira SERVER-6747 untuk masalah ini. Jangan ragu untuk mengikutinya dan memilihnya.