sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan MongoDB lagra och manipulera strängar av UTF-8 med kodpunkter utanför det grundläggande flerspråkiga planet?

Det finns flera problem här:

1) Var medveten om att MongoDB lagrar alla dokument i BSON-formatet. Observera också att BSON-specifikationen hänvisar till en UTF-8-strängkodning, inte en UTF-16-kodning.

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

2) Alla drivrutiner, inklusive JavaScript-drivrutinen i mongo-skalet, bör korrekt hantera strängar som är kodade som UTF-8. (Om de inte gör det är det en bugg!) Många av drivrutinerna råkar också hantera UTF-16 korrekt, även om UTF-16 så vitt jag vet inte stöds officiellt.

3) När jag testade detta med Python-drivrutinen kunde MongoDB framgångsrikt ladda och returnera ett strängvärde som innehöll ett trasigt UTF-16-kodpar. Jag kunde dock inte ladda ett trasigt kodpar med mongo-skalet, och jag kunde inte heller lagra en sträng som innehåller ett trasigt kodpar i en JavaScript-variabel i skalet.

4) mapReduce() körs korrekt på strängdata med ett korrekt UTF-16-kodpar, men det kommer att generera ett fel när man försöker köra mapReduce() på strängdata som innehåller ett trasigt kodpar.

Det verkar som om mapReduce() misslyckas när MongoDB försöker konvertera BSON till en JavaScript-variabel för användning av JavaScript-motorn.

5) Jag har lämnat in Jira-numret SERVER-6747 för det här problemet. Följ den gärna och rösta upp den.




  1. MongoDB - Släpp en databas

  2. Mongodb och Express

  3. Mongoose sparar inte data till MongoDB

  4. Hur man använder Memcached With Yii2 Framework