MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Може ли MongoDB да съхранява и манипулира низове от UTF-8 с кодови точки извън основната многоезична равнина?

Тук има няколко проблема:

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 за този проблем. Чувствайте се свободни да го следвате и да гласувате за него.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Създаване на времева линия, подобна на Twitter, с MongoDB

  2. Връзка на SSL сокет на приложението Django към фърмуера

  3. Как да конвертирате BigDecimal в Double в рамката spring-data-mongodb

  4. използвайки низ за mongodb _id

  5. Безпроблемно мащабиране за вашите MongoDB сървъри