Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Nombres de campos con puntos y signos de dólar

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 la query. No puede indexar estos campos, lo que puede hacer que las query en ellos sean menos eficientes. Para saber qué otras funcionalidades no pueden usar estos campos, consulte Restricciones generales.

  • Consultabilidad. No puede query estos campos directamente. Para leerlos o modificarlos, necesita métodos de asistente como $getField, $setField y $literal. Sin esos asistentes, MongoDB interpreta un nombre de campo que contiene un punto como una ruta a un campo incrustado.

Las reglas de validación del nombre del campo no son iguales para todos los tipos de operaciones de almacenamiento.

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 $jsonSchema

  • Modificar con una secuencia de escape.

  • se utiliza con Cifrado a nivel de campo

  • Utilizarse como subcampo en un documento _id

  • Tener más de 255 palabras separadas por puntos en los nombres de campo

  • ($-solo sufijo) Usarse como parte de timeField en una colección de series de tiempo

  • (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 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.

Para ejemplos de cómo gestionar nombres de campos que contienen puntos y signos de dólar, consulta estas páginas: