Definición
db.createCollection(name, options)Crea una nueva colección. Para puntos de vista,
db.createView()véase.Dado que MongoDB crea una colección implícitamente cuando se hace referencia a la colección por primera vez en un comando, este método se utiliza principalmente para crear nuevas colecciones que empleen opciones específicas. Por ejemplo, utilizas
db.createCollection()para crear:Nueva colección que utiliza validación de esquema.
db.createCollection()es un contenedor alrededor del comando de base de datoscreate.
Compatibilidad
Este método está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
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.
Sintaxis
El método db.createCollection() tiene el siguiente formato de prototipo:
db.createCollection( <name>, { capped: <boolean>, timeseries: { // Added in MongoDB 5.0 timeField: <string>, // required for time series collections metaField: <string>, granularity: <string>, bucketMaxSpanSeconds: <number>, // Added in MongoDB 6.3 bucketRoundingSeconds: <number> // Added in MongoDB 6.3 }, expireAfterSeconds: <number>, clusteredIndex: <document>, // Added in MongoDB 5.3 changeStreamPreAndPostImages: <document>, // Added in MongoDB 6.0 size: <number>, max: <number>, storageEngine: <document>, validator: <document>, validationLevel: <string>, validationAction: <string>, indexOptionDefaults: <document>, viewOn: <string>, pipeline: <pipeline>, collation: <document>, writeConcern: <document> } )
El método db.createCollection() tiene los siguientes parámetros:
Parameter | Tipo | Descripción |
|---|---|---|
| string | El nombre de la colección que se va a crear. Consulta Restricciones de nombres. |
| Documento | Opcional. Opciones de configuración para crear una:
|
El documento options contiene los siguientes campos:
Campo | Tipo | Descripción | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| booleano | Opcional. Para crear una colección con tamaño fijo, especifica | ||||||||||
| string | Requerido al crear una colección de series de tiempo. El nombre del campo que contiene la fecha en cada documento de serie de tiempo. Los documentos en una colección de series de tiempo deben tener una fecha BSON válida como valor para el | ||||||||||
| string | Opcional. El nombre del campo que contiene metadatos en cada documento de serie de tiempo. Los metadatos en el campo especificado deben ser datos utilizados para etiquetar una serie única de documentos. Los metadatos deberían cambiar rara vez, o nunca. El nombre del campo especificado no puede ser | ||||||||||
| string | Opcional, no lo utilices si se configura Configura Para obtener más información sobre la granularidad y los intervalos de agrupación, consulta Configurar granularidad para datos de series de tiempo. | ||||||||||
| entero | Opcional, se utiliza con Para degradar a una versión anterior a MongoDB 6.3, debes modificar la colección para utilizar el valor | ||||||||||
| entero | Opcional, se utiliza con Por ejemplo, al establecer ambos parámetros en | ||||||||||
| Número | Opcional. Especifica los segundos después de los cuales los documentos en una colección de series de tiempo o colección con índice clusterizado expiran. MongoDB elimina automáticamente los documentos caducados. Para colecciones con índice clusterizado, los documentos se eliminan automáticamente en función de la clave de índice agrupada | ||||||||||
| Documento | A partir de MongoDB 5.3, puedes crear una colección con un índice agrupado. Los índices agrupados se almacenan en el mismo archivo WiredTiger de la colección. La colección resultante se llama colección con índice clusterizado. El campo
Novedades en la versión 5.3. | ||||||||||
| Documento | Opcional. A partir de MongoDB 6.0, puedes utilizar eventos de flujo de cambios para generar la versión de un documento antes y después de los cambios (las imágenes previas y posteriores del documento):
Para habilitar las imágenes previas y posteriores del flujo de cambios para la colección, se debe establecer Para obtener ejemplos completos con la salida del flujo de cambios, consulta Flujos de cambio con imágenes previas y posteriores de documentos. Para un ejemplo de Novedades en la versión 6.0. | ||||||||||
| Número | Opcional. Especifica un tamaño máximo en bytes para una colección con tamaño fijo. Una vez que una colección con tamaño fijo alcanza su tamaño máximo, MongoDB remueve los documentos más antiguos para dejar espacio a los nuevos documentos. El campo | ||||||||||
| Número | Opcional. El número máximo de documentos permitidos en la colección con tamaño fijo. El límite de | ||||||||||
| Documento | Opcional. Disponible solo para el motor de almacenamiento WiredTiger. Permite a los usuarios especificar la configuración para el motor de almacenamiento por colección al crear una colección. El valor de la opción La configuración del motor de almacenamiento especificada al crear colecciones se valida y se registra en el oplog durante la replicación para soportar conjuntos de set de réplicas con miembros que utilizan diferentes motores de almacenamiento. A partir de MongoDB 7.2 7.0.5(y), no se pueden especificar las Para obtener detalles, consulte Especificar opciones del motor de almacenamiento. | ||||||||||
| Documento | Opcional. Permite a los usuarios especificar reglas o expresiones de validación para la colección. La opción Para aprender a crear una colección con validación de esquema, consulta Especificar la validación de esquemas JSON. | ||||||||||
| string | Opcional. Determina con qué rigor MongoDB aplica las reglas de validación a los documentos existentes durante una actualización.
Para ver un ejemplo que utiliza | ||||||||||
| string | Opcional. Determina si se debe mostrar IMPORTANTE: La validación de documentos solo se aplica a aquellos documentos según lo determinado por el Para ver un ejemplo que utiliza | ||||||||||
| Documento | Opcional. Permite a los usuarios especificar una configuración por defecto para los índices al crear una colección. La opción La configuración del motor de almacenamiento especificada al crear índices se valida y se registra en el oplog durante la replicación para admitir sets de réplicas con miembros que utilizan diferentes motores de almacenamiento. | ||||||||||
| string | El nombre de la colección o vista de origen desde la cual crear una vista. Para obtener más detalles, consulta | ||||||||||
| arreglo | Un arreglo que consta de las etapas de la canalización de agregación. | ||||||||||
| Documento | Especifica la intercalación por defecto para la colección. La intercalación permite a los usuarios especificar reglas propias del lenguaje para la comparación de strings, como reglas para el uso de mayúsculas y minúsculas y marcas de acento. La opción de intercalación tiene la siguiente sintaxis: Al especificar la intercalación, el campo Si especificas una intercalación a nivel de colección:
Si no se especifica ninguna intercalación para la colección o para las operaciones, MongoDB utiliza la comparación binaria simple usada en versiones anteriores para las comparaciones de strings. Para una colección, solo puedes especificar la intercalación durante la creación de la colección. Una vez establecida, no puedes modificar la intercalación por defecto de la colección. Para un ejemplo, ver Especificar la intercalación. | ||||||||||
| Documento | Opcional. Un documento que expresa el nivel de confirmación de escritura para la operación. Omite usar el nivel de confirmación de escritura por defecto. Cuando se emite en un clúster particionado, |
Control de acceso
Si la implementación aplica autenticación/autorización, db.createCollection() requiere los siguientes privilegios:
Tarea | Privilegios requeridos |
|---|---|
Crea una colección no limitada |
|
Crear una colección con tamaño fijo |
|
Crear una vista |
Sin embargo, si el usuario tiene |
Un usuario con el rol incorporado readWrite en la base de datos tiene los privilegios necesarios para ejecutar las operaciones enumeradas. O crea un usuario con el rol requerido o concede el rol a un usuario existente.
Comportamiento
db.createCollection() tiene el siguiente comportamiento:
Bloqueo de recursos
db.createCollection() obtiene un bloqueo exclusivo en la colección o vista especificada durante la duración de la operación. Todas las operaciones posteriores en la colección deben esperar hasta que db.createCollection() libere el bloqueo. db.createCollection() normalmente mantiene este bloqueo durante un breve período de tiempo.
Crear una vista requiere obtener un bloqueo exclusivo adicional en la colección system.views de la base de datos. Este bloqueo impide la creación o modificación de vistas en la base de datos hasta que el comando se complete.
Transacciones
Puede crear colecciones e índices dentro de una transacción distribuida si la transacción es No es una transacción de escritura entre fragmentos.
Para utilizar db.createCollection() en una transacción, la transacción debe emplear el nivel de consistencia de lectura "local". Si especificas un nivel de consistencia de lectura distinto de "local", la transacción fallará.
Colección o vista con el mismo nombre y las mismas opciones
Si ejecutas db.createCollection() con el mismo nombre y opciones que una colección o vista existente, db.createCollection() indica éxito.
Ejemplos
Crea una colección con tamaño fijo
Las colecciones con tamaño fijo tienen un tamaño máximo o un número máximo de documentos que les impiden crecer más allá de los umbrales establecidos. Todas las colecciones con tamaño fijo deben especificar un tamaño máximo y también pueden especificar un número máximo de documentos. MongoDB remueve los documentos más antiguos si una colección alcanza el límite de tamaño máximo antes de alcanzar el número máximo de documentos. Considera el siguiente ejemplo:
db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )
Este comando crea una colección llamada log con un tamaño máximo de 5 megabytes y un máximo de 5000 documentos.
Consulta colecciones con tamaño fijo para obtener más información sobre las colecciones con tamaño fijo.
Crear una colección de series de tiempo
Para crear una colección de series de tiempo que capture datos meteorológicos de las últimas 24 horas, ejecuta este comando:
db.createCollection( "weather24h", { timeseries: { timeField: "timestamp", metaField: "data", granularity: "hours" }, expireAfterSeconds: 86400 } )
Alternativamente, para crear la misma colección pero limitar cada bucket a valores de marca de tiempo dentro de la misma hora, ejecuta este comando:
db.createCollection( "weather24h", { timeseries: { timeField: "timestamp", metaField: "data", bucketMaxSpanSeconds: 3600, bucketRoundingSeconds: 3600 }, expireAfterSeconds: 86400 } )
Crea una colección con índice clusterizado
El siguiente db.createCollection() ejemplo agrega una colección con índice clusterizado denominada stocks:
db.createCollection( "stocks", { clusteredIndex: { "key": { _id: 1 }, "unique": true, "name": "stocks clustered key" } } )
En el ejemplo, clusteredIndex indica:
"key": { _id: 1 }, que establece la clave del índice agrupado en el campo_id."unique": true, lo que indica que el valor de la clave del índice agrupado debe ser único."name": "stocks clustered key", que define el nombre del índice clúster.
Crea una colección con imágenes previas y posteriores de documentos para Change Streams
A partir de MongoDB 6.0, puedes utilizar eventos de flujo de cambios para generar la versión de un documento antes y después de los cambios (las imágenes previas y posteriores del documento):
La imagen previa es el documento antes de reemplazarlo, actualizarlo o borrarlo. No existe una imagen previa para un documento insertado.
La imagen posterior es el documento tras insertarse, sustituirse o actualizarse. No hay imagen posterior para un documento borrado.
Se debe habilitar
changeStreamPreAndPostImagespara una colección condb.createCollection(),create, ocollMod. Por ejemplo, cuando se utiliza el comandocollMod:db.runCommand( { collMod: <collection>, changeStreamPreAndPostImages: { enabled: true } } )
El siguiente ejemplo crea una colección que tiene changeStreamPreAndPostImages habilitado:
db.createCollection( "temperatureSensor", { changeStreamPreAndPostImages: { enabled: true } } );
Las imágenes previas y posteriores no están disponibles para un evento de flujo de cambios si las imágenes fueron:
No está habilitado en la colección en el momento de la operación de actualización o eliminación de un documento.
Eliminado después del tiempo de retención de imágenes previas y posteriores establecido en
expireAfterSeconds.El siguiente ejemplo configura
expireAfterSecondsen100segundos en todo el clúster:use admin db.runCommand( { setClusterParameter: { changeStreamOptions: { preAndPostImages: { expireAfterSeconds: 100 } } } } ) Nota
El comando
setClusterParameterno es compatible con los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulta Comandos no compatibles en Atlas.El siguiente ejemplo devuelve la configuración actual de
changeStreamOptions, incluyendoexpireAfterSeconds:db.adminCommand( { getClusterParameter: "changeStreamOptions" } ) Configurar
expireAfterSecondsenoffutiliza la política de retención por defecto: las imágenes previas y posteriores se conservan hasta que los eventos correspondientes del flujo de cambios se eliminan del oplog.Si se elimina un evento de flujo de cambios del oplog, las imágenes previas y posteriores correspondientes también se eliminan independientemente del tiempo de retención de las imágenes previas y posteriores
expireAfterSeconds.
Consideraciones adicionales:
Habilitar las imágenes previas y posteriores consume espacio de almacenamiento y aumenta el tiempo de procesamiento. Habilita solo las imágenes previas y de publicación si las necesitas.
Limita el tamaño del evento del flujo de cambios a menos de 16 mebibytes. Para limitar el tamaño del evento, puedes:
Limita el tamaño del documento a 8 megabytes. Puedes solicitar imágenes previas y posteriores simultáneamente en la salida del flujo de cambios si otros campos de eventos del flujo de cambios como
updateDescriptionno son grandes.Solicita solo imágenes posteriores en la salida del flujo de cambios para documentos de hasta 16 mebibytes si otros campos de eventos del flujo de cambios como
updateDescriptionno son grandes.Solicita solo imágenes previas en la salida del flujo de cambios para documentos de hasta 16 mebibytes si:
las actualizaciones de documento afectan solo a una pequeña fracción de la estructura o el contenido del documento, y
no cause un evento de cambio
replace. Un eventoreplacesiempre incluye la imagen de publicación.
Para realizar una solicitud de imagen previa, debes establecer
fullDocumentBeforeChangeenrequiredowhenAvailableendb.collection.watch(). Para solicitar una imagen posterior, establecefullDocumentmediante el mismo método.Las preimágenes se escriben en la colección
config.system.preimages.La colección
config.system.preimagespuede agrandarse. Para limitar el tamaño de la colección, puedes establecer el tiempo aexpireAfterSecondspara las imágenes previas como se mostró antes.Las imágenes previas se eliminan de forma asincrónica mediante un proceso en segundo plano.
Importante
Característica incompatible con versiones anteriores
A partir de MongoDB 6.0, si utilizas imágenes previas y posteriores de documentos para los flujos de cambios, debes deshabilitar changeStreamPreAndPostImages para cada colección mediante el comando collMod antes de poder volver a una versión anterior de MongoDB.
Tip
Para los eventos y resultados del flujo de cambios, consulta Eventos de cambio.
Para buscar cambios en una colección, consulta
db.collection.watch().Para obtener ejemplos completos con la salida del flujo de cambios, consulta Flujos de cambio con imágenes previas y posteriores de documentos.
Especificar la intercalación
La intercalación permite a los usuarios especificar reglas propias del lenguaje para la comparación de strings, como reglas para el uso de mayúsculas y minúsculas y marcas de acento.
Puedes especificar intercalación a nivel de la colección o vista. Por ejemplo, la siguiente operación crea una colección, especificando una intercalación para la colección (Consulta el Documento de intercalación para descripciones de los campos de intercalación):
db.createCollection( "myColl", { collation: { locale: "fr" } } );
Esta intercalación será utilizada por los índices y las operaciones que admiten la intercalación, a menos que especifiquen explícitamente una intercalación diferente. Por ejemplo, inserta los siguientes documentos en myColl:
{ _id: 1, category: "café" } { _id: 2, category: "cafe" } { _id: 3, category: "cafE" }
La siguiente operación utiliza la intercalación de la colección:
db.myColl.find().sort( { category: 1 } )
La operación devuelve los documentos en el siguiente orden:
{ "_id" : 2, "category" : "cafe" } { "_id" : 3, "category" : "cafE" } { "_id" : 1, "category" : "café" }
La misma operación en una colección que utiliza intercalación binaria simple (es decir, no se ha establecido una intercalación específica) devuelve documentos en el siguiente orden:
{ "_id" : 3, "category" : "cafE" } { "_id" : 2, "category" : "cafe" } { "_id" : 1, "category" : "café" }
Especifica las opciones del motor de almacenamiento
Puedes especificar opciones de configuración específicas del motor de almacenamiento para la colección cuando crees una colección con db.createCollection(). Considera la siguiente operación:
db.createCollection( "users", { storageEngine: { wiredTiger: { configString: "<option>=<setting>" } } } )
Esta operación crea una nueva colección denominada users con una string de configuración específica que MongoDB pasará al motor de almacenamiento wiredTiger.
Por ejemplo, para especificar el compresor zlib para bloques de archivos en la colección users, configura la opción block_compressor con el siguiente comando:
db.createCollection( "users", { storageEngine: { wiredTiger: { configString: "block_compressor=zlib" } } } )
A partir de MongoDB 7.2 7.0.5(y), no se pueden especificar las wiredTiger opciones de cifrado del motor de almacenamiento al crear una colección db.createCollection() con. Para configurar el cifrado del motor de almacenamiento WiredTiger, consulte Cifrado en reposo.