sql >> Base de Datos >  >> NoSQL >> MongoDB

¿MongoDB puede almacenar y manipular cadenas de UTF-8 con puntos de código fuera del plano multilingüe básico?

Aquí hay varios problemas:

1) Tenga en cuenta que MongoDB almacena todos los documentos en formato BSON. También tenga en cuenta que la especificación BSON se refiere a una codificación de cadena UTF-8, no a una codificación UTF-16.

Ref:http://bsonspec.org/#/specification

2) Todos los controladores, incluido el controlador de JavaScript en el shell de mongo, deben manejar correctamente las cadenas codificadas como UTF-8. (¡Si no lo hacen, entonces es un error!) Muchos de los controladores también manejan correctamente UTF-16, aunque hasta donde yo sé, UTF-16 no es oficialmente compatible.

3) Cuando probé esto con el controlador de Python, MongoDB pudo cargar y devolver con éxito un valor de cadena que contenía un par de códigos UTF-16 rotos. Sin embargo, no pude cargar un par de códigos rotos usando el shell mongo, ni pude almacenar una cadena que contuviera un par de códigos rotos en una variable de JavaScript en el shell.

4) mapReduce() se ejecuta correctamente en datos de cadena utilizando un par de códigos UTF-16 correcto, pero generará un error al intentar ejecutar mapReduce() en datos de cadena que contienen un par de códigos roto.

Parece que mapReduce() está fallando cuando MongoDB intenta convertir el BSON en una variable de JavaScript para que la use el motor de JavaScript.

5) Presenté el problema de Jira SERVER-6747 para este problema. Siéntase libre de seguirlo y votarlo.