Docs Menu
Docs Home
/
Manual de MongoDB
/

Documentos

MongoDB almacena registros de datos como documentos BSON. BSON es una representación binaria de DocumentosJSON, aunque contienen más tipos de datos que JSON. Para la especificación BSON, consulte bsonspec.org. Véase también Tipos BSON.

Un documento de MongoDB.

MongoDB almacena registros como documentos para las implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

Los documentos de MongoDB están compuestos por pares de campo y valor y tienen la siguiente estructura:

{
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}

El valor de un campo puede ser cualquiera de los tipos de datos BSON, incluidos otros documentos, arreglos y arreglos de documentos. Por ejemplo, el siguiente documento contiene valores de diversos tipos:

var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : NumberLong(1250000)
}

Los campos mencionados anteriormente tienen los siguientes tipos de datos:

  • _id contiene un ObjectId.

  • name incluye un documento incrustado que incluye los campos first y last.

  • birth y death incluye valores del tipo fecha.

  • contribs contiene un arreglo de strings.

  • views contiene un valor del tipo NumberLong.

Los nombres de los campos son strings.

Los documentos tienen las siguientes restricciones en los nombres de campo:

  • El nombre del campo _id está reservado para su uso como llave primaria; su valor debe ser único en la colección, es inmutable y puede ser de cualquier tipo que no sea un arreglo o una expresión regular. Si el _id contiene subcampos, los nombres de los subcampos no pueden comenzar con el símbolo ($).

  • Los nombres de campo no pueden contener el caracter null.

  • El servidor permite el almacenamiento de nombres de campo que contienen puntos (.) y signos de dólar ($).

  • MongodB 5.0 ofrece un mejor soporte para el uso de ($) y (.) en los nombres de campo. Existen algunas restricciones. Consulta Consideraciones sobre los nombres de campo para obtener más detalles.

El lenguaje de consulta de MongoDB no admite documentos con nombres de campo duplicados. Si bien algunos generadores BSON permiten crear documentos BSON con nombres de campo duplicados, no se permite insertar estos documentos en MongoDB,incluso si la inserción se realiza correctamente o parece realizarse correctamente. Por ejemplo, insertar un documento BSON con nombres de campo duplicados mediante un controlador MongoDB puede provocar que el controlador elimine automáticamente los valores duplicados antes de la inserción, o que se inserte un documento no válido con campos duplicados. Consultar estos documentos generaría resultados arbitrarios e incoherentes.

MongoDB utiliza la notación de puntos para acceder a los elementos de un arreglo y a los campos de un documento incrustado.

Para especificar o acceder a un elemento de un arreglo por la posición del índice basado en cero, concatena el nombre del arreglo con el punto (.) y la posición del índice basado en cero, y encierra entre comillas:

"<array>.<index>"

Por ejemplo, dado el siguiente campo en un documento:

{
...
contribs: [ "Turing machine", "Turing test", "Turingery" ],
...
}

Para especificar el tercer elemento en el arreglo contribs, utiliza la notación de puntos "contribs.2".

Para ver ejemplos de consultas a arreglos, visita:

Tip

  • $[] todos los operadores posicionales para las operaciones de actualización.

  • $[<identifier>] operadores posicionales filtrados para operaciones de actualización.

  • $ operadores posicionales para operaciones de actualización.

  • $ operador de proyección cuando se desconoce la posición del índice del arreglo.

  • Consulta un arreglo para obtener ejemplos de notación de puntos con arreglos.

Para especificar o acceder a un campo de un documento incrustado con notación de puntos, concatena el nombre del documento incrustado con el punto (.) y el nombre del campo, y enciérralo entre comillas:

"<embedded document>.<field>"

Por ejemplo, dado el siguiente campo en un documento:

{
...
name: { first: "Alan", last: "Turing" },
contact: { phone: { type: "cell", number: "111-222-3333" } },
...
}
  • Para especificar el campo llamado last en el campo name, utiliza la notación de puntos "name.last".

  • Para especificar el number en el documento phone en el campo contact, utiliza la notación de puntos "contact.phone.number".

Advertencia

Los campos de partición no pueden utilizar nombres de campo que contengan un punto (.).

Para ejemplos de consultas de documentos incrustados, consulte:

Los documentos tienen los siguientes atributos:

El tamaño máximo del documento BSON es 16 megabytes.

El tamaño máximo del documento ayuda a garantizar que un solo documento no utilice una cantidad excesiva de RAM ni, durante la transmisión, un ancho de banda excesivo. Para almacenar documentos que superen el tamaño máximo, MongoDB proporciona la API de GridFS. Consulte y la mongofiles documentación de su controlador para obtener más información sobre GridFS.

A diferencia de los objetos de JavaScript, los campos en un documento BSON están ordenados.

Para queries, el comportamiento del orden de los campos es el siguiente:

  • Al comparar documentos, el orden de los campos es significativo. Por ejemplo, al comparar documentos con los campos a y b en una query:

    • {a: 1, b: 1} es igual a {a: 1, b: 1}

    • {a: 1, b: 1} no es igual a {b: 1, a: 1}

  • Para una ejecución eficiente de query, el motor de query puede reordenar los campos durante el procesamiento de query. Entre otros casos, el reordenamiento de campos puede ocurrir al procesar estos operadores de proyección: $project, $addFields, $set y $unset.

    • El reordenamiento de los campos puede ocurrir tanto en los resultados intermedios como en los resultados finales devueltos por una query.

    • Dado que algunas operaciones pueden reordenar los campos, no debes confiar en un orden específico de los campos en los resultados devueltos por una query que utiliza los operadores de proyección enumerados anteriormente.

Para las operaciones de guardado, MongoDB conserva el orden de los campos del documento excepto en los siguientes casos:

  • El campo _id siempre es el primer campo del documento.

  • Las actualizaciones que incluyen renaming de los nombres de campo pueden resultar en el reordenamiento de los campos en el documento.

En MongoDB, cada documento almacenado en una colección requiere un campo _id único que actúa como clave principal. Si un documento insertado omite el _id campo, el controlador de MongoDB genera automáticamente un ObjectId para el _id campo.

Esto también se aplica a los documentos insertados mediante operaciones de actualización con inserción: true.

El campo _id tiene el siguiente comportamiento y restricciones:

  • Por defecto, MongoDB crea un índice único en el campo _id durante la creación de una colección.

  • El campo _id siempre es el primer campo en los documentos. Si el servidor recibe un documento que no tiene el campo _id en primer lugar, entonces el servidor moverá el campo al inicio.

  • Si el _id contiene subcampos, los nombres de los subcampos no pueden comenzar con el símbolo ($).

  • El campo _id puede contener valores de cualquier tipo de dato BSON, excepto un arreglo, una expresión regular o un valor indefinido.

    Advertencia

    Para asegurar el funcionamiento correcto de la replicación, no almacenes valores que sean del tipo de expresión regular BSON en el campo _id.

Las siguientes son opciones habituales para almacenar valores para _id:

  • Utilice un ObjectId.

  • Utilice un identificador único natural, si está disponible. Esto ahorra espacio y evita un índice adicional.

  • Genera un número que incrementa automáticamente.

  • Genere un UUID en el código de su aplicación. Para un almacenamiento más eficiente de los valores de UUID en la colección y en el índice _id, almacene el UUID como un valor del tipo BSON BinData.

    Las claves de índice que son del tipo BinData se almacenan de manera más eficiente en el índice si:

    • el valor del subtipo binario está en el rango de 0-7 o 128-135, y

    • la longitud del arreglo de bytes es: 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24 o 32.

  • Se debe usar la función BSON UUID del driver para generar UUID. Ten en cuenta que las implementaciones de drivers pueden implementar la lógica de serialización y deserialización de UUID de manera diferente, lo que puede no ser completamente compatible con otros drivers. Se debe consultar la documentación del driver para obtener información sobre la interoperabilidad de UUID.

Nota

La mayoría de los clientes del controlador de MongoDB incluyen el campo _id y generan un ObjectId antes de enviar la operación de inserción a MongoDB. Sin embargo, si el cliente envía un documento sin un campo _id, el mongod añade el campo _id y genera el ObjectId.

Además de definir registros de datos, MongoDB utiliza la estructura de documentos en todas partes, incluyendo, pero no limitándose a: filtros de query, documentos de especificaciones de actualización y documentos de especificaciones de índice

Los documentos de filtro de query especifican las condiciones que determinan qué registros seleccionar para las operaciones de lectura, actualización y borrado.

Puedes utilizar expresiones <field>:<value> para especificar la condición de igualdad y las expresiones del operador del query.

{
<field1>: <value1>,
<field2>: { <operator>: <value> },
...
}

Para ver ejemplos, consulta:

Los documentos de especificación de actualización utilizan operadores de actualización para especificar las modificaciones de datos que se deben realizar en campos específicos durante una operación de actualización.

{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}

Para ejemplos, consulta Especificaciones de actualización.

Los documentos de especificación de índices definen el campo a indexar y el tipo de índice:

{ <field1>: <type1>, <field2>: <type2>, ... }

Para obtener más información sobre el modelo orientado a documentos de MongoDB, descarga la Guía de Modernización de Aplicaciones de MongoDB.

La descarga incluye los siguientes recursos:

  • Presentación sobre la metodología de modelado de datos con MongoDB

  • Libro blanco que cubre las mejores prácticas y consideraciones para migrar a MongoDB desde un modelo de datos RDBMS

  • Referencia del esquema MongoDB con su equivalente RDBMS

  • Cuadro de mando de modernización de aplicaciones

Volver

Construir vistas materializadas sobre datos de series temporales

En esta página