Evite usar signos de dólar ($) o puntos (.) en los nombres de sus campos. MongoDB almacena documentos que usan estos caracteres en los nombres de los campos, pero los desaconseja por estas razones:
Rendimiento de las consultas. No se pueden indexar estos campos, lo que puede reducir la eficiencia de las consultas. Para saber qué otras funciones no pueden usar estos campos, consulte Restricciones generales.
Las reglas de validación del nombre del campo no son iguales para todos los tipos de operaciones de almacenamiento.
Restricciones generales
Existen algunas restricciones generales sobre el uso de nombres de campo que comienzan con un signo de dólar ($) o de nombres de campo que contienen un punto (.). Estos campos no pueden:
Estar indexado
Ser utilizado como parte de una clave de partición
Validarse utilizando
$jsonSchemaModificar con una secuencia de escape.
se utiliza con Cifrado a nivel de campo
Utilizarse como subcampo en un documento
_idTener más de 255 palabras separadas por puntos en los nombres de campo
(solo prefijo
$) Se debe confiar en el nivel raíz de un documento si el nombre del campo choca con un nombre de campo que MongoDB reserva para los metadatos internos del documento
MongoDB reserva un conjunto de nombres de campo con prefijo $para metadatos de documentos internos. Si un nombre de campo de nivel raíz en sus datos choca con uno de esos nombres reservados, es posible que MongoDB no conserve el campo ni lo devuelva a las query, y en algunos casos elimina el campo de los resultados. Estos nombres reservados son internos y pueden cambiar entre versiones, por lo que no almacene datos en nombres de campo con prefijo $de nivel raíz ni confíe en poder leerlos de nuevo.
Advertencia
Posible pérdida de datos con signos de dólar ($) y puntos (.)
Existe una pequeña posibilidad de pérdida de datos cuando se utilizan nombres de campo con el prefijo dólar ($) o nombres de campo que contienen puntos (.) si estos nombres de campo se utilizan junto con escrituras no reconocidas (nivel de confirmación de escritura w=0) en servidores que sean anteriores a MongoDB 5.0.
Al ejecutar los comandos insert, update y findAndModify, los controladores compatibles con la versión 5.0 eliminan las restricciones sobre el uso de documentos con nombres de campo que tengan el prefijo dólar ($) o que contengan puntos (.). Estos nombres de campo generaban un error del lado del cliente en versiones anteriores del controlador.
Las restricciones se eliminan independientemente de la versión del servidor a la que esté conectado el controlador. Si un controlador 5.0 envía un documento a un servidor más antiguo, el documento será rechazado sin enviar un error.
Advertencia
Preocupaciones sobre la importación y exportación con signos de dólar ($) y puntos (.)
A partir de MongoDB,5.0 los nombres de los campos de los documentos pueden$ llevar el prefijo del signo de dólar () y contener puntos. (). Sin embargo, mongoimport y mongoexport podrían no funcionar como se espera en algunos casos con nombres de campos que utilizan estos caracteres.
MongoDB Extended JSON v2 no puede diferenciar entre los contenedores de tipo y los campos que tienen el mismo nombre que los contenedores de tipo. No utilices formatos JSON extendidos en contextos donde las representaciones BSON correspondientes puedan incluir claves con prefijo de dólar ($). El mecanismo DBRef es una excepción a esta regla general.
También existen restricciones para usar mongoimport y con puntos mongoexport (). en los nombres de los campos. Dado que los archivos CSV usan el punto. () para representar jerarquías de datos, un punto. () en el nombre de un campo se interpretará erróneamente como un nivel de anidamiento.
Obtén más información
Para ejemplos de cómo gestionar nombres de campos que contienen puntos y signos de dólar, consulta estas páginas: