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

MongoDB può memorizzare e manipolare stringhe di UTF-8 con punti di codice al di fuori del piano multilingue di base?

Ci sono diversi problemi qui:

1) Tieni presente che MongoDB archivia tutti i documenti utilizzando il formato BSON. Tieni inoltre presente che le specifiche BSON si riferiscono a una codifica di stringhe UTF-8, non a una codifica UTF-16.

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

2) Tutti i driver, incluso il driver JavaScript nella shell mongo, dovrebbero gestire correttamente le stringhe codificate come UTF-8. (Se non lo fanno, allora è un bug!) Molti dei driver gestiscono correttamente anche UTF-16, anche se per quanto ne so, UTF-16 non è ufficialmente supportato.

3) Quando l'ho testato con il driver Python, MongoDB è stato in grado di caricare e restituire correttamente un valore di stringa che conteneva una coppia di codici UTF-16 non funzionante. Tuttavia, non è stato possibile caricare una coppia di codice interrotta utilizzando la shell mongo, né è possibile memorizzare una stringa contenente una coppia di codice interrotta in una variabile JavaScript nella shell.

4) mapReduce() viene eseguito correttamente su dati stringa utilizzando una coppia di codice UTF-16 corretta, ma genererà un errore quando si tenta di eseguire mapReduce() su dati stringa contenenti una coppia di codice interrotta.

Sembra che mapReduce() abbia esito negativo quando MongoDB sta tentando di convertire il BSON in una variabile JavaScript per l'utilizzo da parte del motore JavaScript.

5) Ho archiviato il problema Jira SERVER-6747 per questo problema. Sentiti libero di seguirlo e votarlo.