Ci sono alcune alternative:
1. Sostituisci i punti con un trattino.
Questo sarebbe il mio approccio preferito, poiché mantiene la struttura abbastanza esplicita.
Dal momento che secondo te, "è praticamente un inserimento una volta", dovrebbe essere relativamente semplice controllare se non rompe nulla (cioè c'è già una stessa chiave con un trattino). Per altre situazioni, eseguire tali controlli a livello di codice richiede di scrivere del codice, ma è ancora un'attività relativamente semplice.
Sconsiglio vivamente questo approccio, dal momento che porterebbe a enormi mal di testa durante il debug . Lasciare qualcuno che utilizza il JSON risultante da qualche parte nel codice lontano da MongoDB per indovinare che un punto non è in realtà un punto è un buon modo per perdere letteralmente settimane del tempo di qualcuno. Mantieni questi trucchi Unicode per gli hacker che vogliono indurre qualcuno a pensare che un personaggio sia diverso.
3. Usa BSON.
Dato che affermi che "recupererai principalmente l'intero documento anziché eseguire una query per parti di esso", questo approccio non presenta importanti inconvenienti nel tuo caso . Tuttavia, hai detto "principalmente", il che significa che a volte recupererai solo alcune parti del documento.
In generale, lo svantaggio è che non sarai in grado di cercare nel documento o di caricarne solo una parte.
4. Utilizzare una codifica standard, come Base64.
Convertire le chiavi problematiche (o tutte le chiavi, a seconda del rapporto tra quelle problematiche e non problematiche) in Base64 o esadecimale potrebbe essere una soluzione praticabile, con il vantaggio di essere piuttosto esplicito: la maggior parte degli sviluppatori riconoscerebbe i valori Base64 o esadecimali a colpo d'occhio .
Lo svantaggio è la maggiore impronta di memoria, nonché la necessità di codificare e decodificare le chiavi quando le si utilizza.
Sconsiglio vivamente questo approccio, dal momento che renderebbe ambigua la query di dati e perdere ore o giorni a cercare di capire perché una query specifica non fa ciò che immaginavi debba fare. Dot è un personaggio riservato e il segno di spunta è qui per proteggerti; dicendo a MongoDB di saltare il controllo, rimanderai solo il momento in cui dovrai affrontare un conflitto tra la sintassi di MongoDB e il carattere riservato usato in una chiave.