MongoDB permite nombres de campos que contienen signos de dólar ($) o puntos (.). Sin embargo, se desaconseja el uso de estos caracteres en los nombres de los campos, ya que MongoDB no admite algunas funcionalidades con estos campos.
En la mayoría de los casos, los datos almacenados con nombres de campo como estos no son directamente accesibles. Es necesario usar métodos auxiliares como
$getField$setField, y en consultas que acceden a esos $literal campos.
Las reglas de validación del nombre de campo no son las mismas 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
Ser validado usando
$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
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 del documento pueden tener prefijo de dólar ($) y pueden contener puntos (.). Sin embargo, mongoimport y mongoexport pueden no funcionar como se espera en algunas situaciones 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 hay restricciones en el uso de mongoimport y mongoexport con puntos (.) en los nombres de campo. Dado que los archivos CSV utilizan el punto (.) para representar jerarquías de datos, un punto (.) en el nombre de un campo se interpretará incorrectamente 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: