Тук има няколко проблема:
1) Моля, имайте предвид, че MongoDB съхранява всички документи, използвайки формата BSON. Също така имайте предвид, че спецификацията BSON се отнася за кодиране на низ UTF-8, а не за кодиране UTF-16.
Реф.:http://bsonspec.org/#/specification
2) Всички драйвери, включително драйвера на JavaScript в mongo shell, трябва правилно да обработват низове, които са кодирани като UTF-8. (Ако не го направят, това е грешка!) Много от драйверите се случва да обработват правилно UTF-16, въпреки че, доколкото знам, UTF-16 не се поддържа официално.
3) Когато тествах това с драйвера на Python, MongoDB може успешно да зареди и върне низова стойност, която съдържа счупена кодова двойка UTF-16. Въпреки това не можах да заредя счупена кодова двойка, използвайки mongo shell, нито можех да съхраня низ, съдържащ счупена кодова двойка, в JavaScript променлива в shell.
4) mapReduce() работи правилно върху низови данни, използвайки правилна кодова двойка UTF-16, но ще генерира грешка, когато се опитва да изпълни mapReduce() върху низови данни, съдържащи повредена кодова двойка.
Изглежда, че mapReduce() се проваля, когато MongoDB се опитва да преобразува BSON в JavaScript променлива за използване от двигателя на JavaScript.
5) Подадох Jira проблем SERVER-6747 за този проблем. Чувствайте се свободни да го следвате и да гласувате за него.