Có một số vấn đề ở đây:
1) Xin lưu ý rằng MongoDB lưu trữ tất cả các tài liệu bằng định dạng BSON. Cũng lưu ý rằng thông số kỹ thuật BSON tham chiếu đến mã hóa chuỗi UTF-8, không phải mã hóa UTF-16.
Tham khảo: http://bsonspec.org/#/specification
2) Tất cả các trình điều khiển, bao gồm trình điều khiển JavaScript trong trình bao mongo, phải xử lý đúng các chuỗi được mã hóa dưới dạng UTF-8. (Nếu không thì đó là lỗi!) Nhiều trình điều khiển cũng xử lý UTF-16 đúng cách, mặc dù theo tôi biết, UTF-16 không được hỗ trợ chính thức.
3) Khi tôi kiểm tra điều này với trình điều khiển Python, MongoDB có thể tải thành công và trả về giá trị chuỗi có chứa cặp mã UTF-16 bị hỏng. Tuy nhiên, tôi không thể tải một cặp mã bị hỏng bằng cách sử dụng trình bao mongo, cũng như không thể lưu trữ một chuỗi chứa một cặp mã bị hỏng vào một biến JavaScript trong trình bao.
4) mapReduce () chạy chính xác trên dữ liệu chuỗi sử dụng cặp mã UTF-16 chính xác, nhưng nó sẽ tạo ra lỗi khi cố gắng chạy mapReduce () trên dữ liệu chuỗi có chứa cặp mã bị hỏng.
Có vẻ như mapReduce () không thành công khi MongoDB đang cố gắng chuyển đổi BSON thành một biến JavaScript để công cụ JavaScript sử dụng.
5) Tôi đã đệ trình Jira issue SERVER-6747 cho vấn đề này. Hãy theo dõi và bình chọn nó.