Definición
createCrea explícitamente una colección o vista.
Nota
La vista creada con este comando no hace referencia a vistas materializadas. Para obtener información sobre vistas materializadas bajo demanda, consulte
$mergeen su lugar.
Compatibilidad
Este comando 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 comando create tiene la siguiente sintaxis:
Nota
MongoDB 6.3 añade los bucketMaxSpanSeconds bucketRoundingSeconds parámetros y. Para degradar 6.3 la versión a una versión inferior a, debe eliminar todas las colecciones con estos parámetros o modificarlas para usar el parámetro granularity correspondiente, si es posible. Para más detalles,collMod consulte.
{ create: <collection or view name>, capped: <true|false>, timeseries: { timeField: <string>, metaField: <string>, granularity: <string> }, expireAfterSeconds: <number>, autoIndexId: <true|false>, size: <max_size>, max: <max_documents>, storageEngine: <document>, validator: <document>, validationLevel: <string>, validationAction: <string>, indexOptionDefaults: <document>, viewOn: <source>, pipeline: <pipeline>, collation: <document>, writeConcern: <document>, comment: <any> }
Campos de comandos
El comando create tiene los siguientes campos:
Campo | Tipo | Descripción | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | El nombre de la nueva colección o vista.Consulte Restricciones de nombres. | ||||||||||
| 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. Los valores posibles son | ||||||||||
| Número | Opcional. Habilite la eliminación automática de documentos en una colección de series temporales especificando el número de segundos tras los cuales caducan. MongoDB elimina automáticamente los documentos caducados. | ||||||||||
| booleano | Opcional. Especifique ImportanteA partir de MongoDB 4.0, no se puede establecer la opción Obsoleto desde la versión 3.2. | ||||||||||
| entero | 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 | ||||||||||
| entero | 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. Para obtener más información, consulte Especificar opciones del motor de almacenamiento. | ||||||||||
| Documento | Opcional. Permite a los usuarios especificar reglas o expresiones de validación para la colección. Para más información,consulte Validación de esquemas. Nuevo en la versión 3.2. La opción
| ||||||||||
| string | Opcional. Determina con qué rigor MongoDB aplica las reglas de validación a los documentos existentes durante una actualización. Nuevo en la versión 3.2.
| ||||||||||
| string | Opcional. Determina si se debe mostrar La validación de documentos solo se aplica a aquellos documentos según lo determinado por el
| ||||||||||
| 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. Nuevo en la versión 3.2. | ||||||||||
| string | El nombre de la colección o vista de origen desde la que se creará la vista. El nombre no es el espacio de nombres completo de la colección o vista; es decir, no incluye el nombre de la base de datos e implica la misma base de datos que la vista que se va a crear. Debe crear las vistas en la misma base de datos que la colección de origen. Consulte también Nuevo en la versión 3.4. | ||||||||||
| arreglo | Una matriz que consta de las etapas de la canalización de agregación. La definición de vista La definición de la vista es pública; es decir, las operaciones Consulte también | ||||||||||
| Especifica la intercalación predeterminada para la colección o la vista. 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 vista, si no se especifica ninguna intercalación, la intercalación predeterminada es la intercaladora de comparación binaria simple. Para una vista de una colección, la vista no hereda la configuración de intercalación de la colección. Para una vista de otra vista, la vista que se va a crear debe especificar la misma configuración de intercalación. Después de crear la colección o la vista, no es posible actualizar su intercalación predeterminada. Para ver un ejemplo que especifica la intercalación predeterminada durante la creación de una colección, consulte Especificar intercalación. Nuevo en la versión 3.4. | |||||||||||
| 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, | ||||||||||
| any | Opcional. Un comentario proporcionado por el usuario para adjuntar a este comando. Una vez configurado, este comentario aparece junto a los registros de este comando en las siguientes ubicaciones:
Un comentario puede ser de cualquier tipo BSON válido (string, objeto, arreglo, etc.). Nuevo en la versión 4.4. |
El método db.createCollection() y el método db.createView() create envuelven el comando.
Comportamiento
Bloqueo de recursos
Cambiado en la versión 4.2.
create 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 create libere el bloqueo. create 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.
Antes de MongoDB,4.2 create obtenía un bloqueo exclusivo en la base de datos principal, bloqueando todas las operaciones en la base de datos y todas sus colecciones hasta que se completaba la operación.
Transacciones
Cambiado en la versión 4.4.
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 usar create en una transacción, la transacción debe usar el nivel de consistencia de lectura "local". Si especificas un nivel de consistencia de lectura distinto de "local", la transacción fallará.
Stable API
Modificado en la versión 5.0.
Al utilizar la API estable1 V, no puede especificar los siguientes campos en un create comando:
autoIndexIdcappedindexOptionDefaultsmaxsizestorageEngine
Control de acceso
Si la implementación aplica autenticación/autorización, create 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.
Ejemplos
Crea una colección con tamaño fijo
Para crear una colección limitada a 64 kilobytes, emita el comando en el siguiente formato:
db.runCommand( { create: "collection", capped: true, size: 64 * 1024 } )
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 } )
Nota
En este ejemplo,expireAfterSeconds se especifica como,86400 lo que significa que los documentos caducan 86400 segundos después del timestamp valor.Consulte "Configurar la eliminación automática de colecciones de series temporales (TTL)".
Crear una Vista
Nota
La vista creada por este comando no hace referencia a vistas materializadas. Para obtener información sobre vistas materializadas bajo demanda,$merge consulte.
Cambiado en la versión 4.2.
La definición de vista pipeline no puede incluir $out las etapas ni. Si la definición de vista incluye $merge $lookup $facet una canalización anidada (por ejemplo, la definición de vista incluye las etapas o), esta restricción también se aplica a las canalizaciones anidadas.
Para crear una vista utilizando el comando, utilice la siguiente create sintaxis:
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline> } )
o si se especifica una intercalación:
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )
Por ejemplo, crea una colección survey con los siguientes documentos:
db.survey.insertMany( [ { _id: 1, empNumber: "abc123", feedback: { management: 3, environment: 3 }, department: "A" }, { _id: 2, empNumber: "xyz987", feedback: { management: 2, environment: 3 }, department: "B" }, { _id: 3, empNumber: "ijk555", feedback: { management: 3, environment: 4 }, department: "A" } ] )
La siguiente operación crea una vista managementRatings con los campos _id, feedback.management y department:
db.runCommand ( { create: "managementFeedback", viewOn: "survey", pipeline: [ { $project: { "management": "$feedback.management", department: 1 } } ] } )
Importante
La definición de la vista es pública; es decir, las operaciones db.getCollectionInfos() y explain en la vista incluirán el pipeline que define la vista. Por lo tanto, evite referirse directamente a campos y valores sensibles en las definiciones de vistas.
Especificar la intercalación
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.runCommand ( { create: "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
Puede especificar opciones de configuración del motor de almacenamiento específicas de la colección al crear una colección db.createCollection() con. Considere la siguiente operación:
db.runCommand( { create: "users", storageEngine: { wiredTiger: { configString: "<option>=<setting>" } } } )
Esta operación crea una nueva colección llamada users con una cadena de configuración específica que MongoDB pasará al wiredTiger motor de almacenamiento. Consulte la documentación de WiredTiger sobre las opciones de nivel de colección.para opciones wiredTiger específicas.