sql >> Database teknologi >  >> NoSQL >> MongoDB

Kan MongoDB gemme og manipulere strenge af UTF-8 med kodepunkter uden for det grundlæggende flersprogede plan?

Der er flere problemer her:

1) Vær opmærksom på, at MongoDB gemmer alle dokumenter i BSON-formatet. Bemærk også, at BSON-specifikationen henviser til en UTF-8-strengkodning, ikke en UTF-16-kodning.

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

2) Alle driverne, inklusive JavaScript-driveren i mongo-skallen, skal håndtere strenge, der er kodet som UTF-8. (Hvis de ikke gør det, er det en fejl!) Mange af driverne håndterer også UTF-16 korrekt, selvom så vidt jeg ved, er UTF-16 ikke officielt understøttet.

3) Da jeg testede dette med Python-driveren, kunne MongoDB indlæse og returnere en strengværdi, der indeholdt et ødelagt UTF-16-kodepar. Jeg kunne dog ikke indlæse et brudt kodepar ved hjælp af mongo-skallen, og jeg kunne heller ikke gemme en streng indeholdende et brudt kodepar i en JavaScript-variabel i skallen.

4) mapReduce() kører korrekt på strengdata ved hjælp af et korrekt UTF-16 kodepar, men det vil generere en fejl, når man forsøger at køre mapReduce() på strengdata, der indeholder et ødelagt kodepar.

Det ser ud til, at mapReduce() fejler, når MongoDB forsøger at konvertere BSON til en JavaScript-variabel til brug af JavaScript-motoren.

5) Jeg har indgivet Jira problem SERVER-6747 for dette problem. Følg den gerne og stem den op.




  1. MongoDB $slice (indlejret array-paging)

  2. Hvordan tæller man forekomster i indlejret dokument i mongodb?

  3. Typescript Mongoose ignorer visse felter i forespørgselsresultatet på den sikre måde

  4. Unikke dokumenter i en MongoDB-samling