sql >> Databáze >  >> NoSQL >> MongoDB

Může MongoDB ukládat a manipulovat s řetězci UTF-8 s kódovými body mimo základní vícejazyčnou rovinu?

Zde je několik problémů:

1) Mějte prosím na paměti, že MongoDB ukládá všechny dokumenty ve formátu BSON. Všimněte si také, že specifikace BSON odkazuje na kódování řetězce UTF-8, nikoli na kódování UTF-16.

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

2) Všechny ovladače, včetně ovladače JavaScriptu v mongo shellu, by měly správně zpracovávat řetězce, které jsou kódovány jako UTF-8. (Pokud ne, je to chyba!) Mnoho ovladačů také správně zvládá UTF-16, ačkoli pokud vím, UTF-16 není oficiálně podporováno.

3) Když jsem to testoval s ovladačem Python, MongoDB mohl úspěšně načíst a vrátit hodnotu řetězce, která obsahovala poškozený pár kódů UTF-16. Nemohl jsem však načíst nefunkční kódový pár pomocí mongo shellu, ani jsem nemohl uložit řetězec obsahující poškozený kódový pár do proměnné JavaScriptu v shellu.

4) mapReduce() běží správně na řetězcových datech pomocí správného páru kódů UTF-16, ale při pokusu o spuštění mapReduce() na řetězcových datech obsahujících poškozený kódový pár vygeneruje chybu.

Zdá se, že mapReduce() selhává, když se MongoDB pokouší převést BSON na proměnnou JavaScriptu pro použití JavaScriptovým enginem.

5) Pro tento problém jsem podal Jira issue SERVER-6747. Neváhejte jej sledovat a hlasujte pro něj.




  1. Vypadá to, že když udělám fs.writeFile(), změněný soubor restartuje nodemon. Jak to udělat, aby se to nerestartovalo?

  2. transakce více dokumentů nefunguje v c# pomocí komunitního serveru mongodb 4.08

  3. Povolení komprese dat v MongoDB 3.0

  4. Redis - nějaký způsob, jak spustit událost, když se hodnota již aktivně nezapisuje?