Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Administración

Cree

create

Crea 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 $merge en su lugar.

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.

El comando create tiene la siguiente sintaxis:

Nota

MongoDB 6.3 añade los parámetros bucketMaxSpanSeconds y bucketRoundingSeconds. Para degradar por debajo de la versión 6.3, debes descartar todas las colecciones con estos parámetros o modificarlas para que usen el granularity correspondiente, si es posible. Para más detalles, consulta collMod.

{
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>
}

El comando create tiene los siguientes campos:

Campo
Tipo
Descripción

create

string

El nombre de la nueva colección o vista.Consulte Restricciones de nombres.

capped

booleano

Opcional. Para crear una colección con tamaño fijo, especifica true. Si especificas true, también debes establecer un tamaño máximo en el campo size.

timeseries.timeField

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 timeField.

timeseries.metaField

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 _id ni el mismo que el timeseries.timeField. El campo puede ser de cualquier tipo excepto un arreglo.

timeseries.granularity

string

Opcional. Los valores posibles son "seconds" (predeterminado), "minutes" y "hours". Establezca la granularidad en el valor que más coincida con el intervalo de tiempo entre mediciones entrantes consecutivas. Configurar el parámetro granularity con precisión mejora el rendimiento al optimizar el almacenamiento interno de los datos de la colección de series temporales.

expireAfterSeconds

Número

opcional. Habilita la eliminación automática de documentos en una colección de series de tiempo especificando la cantidad de segundos después de los cuales los documentos expiran. MongoDB elimina automáticamente los documentos caducados.

autoIndexId

booleano

opcional. Especifique false para deshabilitar la creación automática de un índice en el campo _id.

Importante

A partir de MongoDB 4.0, no es posible establecer la opción autoIndexId en false al crear colecciones en bases de datos distintas de la base de datos local.

Obsoleto desde la versión 3.2.

size

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 size es obligatorio para las colecciones con tamaño fijo y se ignora para las demás colecciones.

max

entero

Opcional. El número máximo de documentos permitidos en la colección con tamaño fijo. El límite de size tiene prioridad sobre este límite. Si una colección con tamaño fijo alcanza el límite size antes de alcanzar el número máximo de documentos, MongoDB remueve los documentos antiguos. Si prefieres usar el límite de max, asegúrate de que el límite de size, que es necesario para una colección con tamaño fijo, sea suficiente para contener el número máximo de documentos.

storageEngine

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 storageEngine debe tomar la siguiente forma:

{ <storage-engine-name>: <options> }

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.

validator

Documento

opcional. Permite a los usuarios especificar reglas de validación o expresiones para la colección. Para obtener más información, consulta Validación de esquemas.

Novedad en la versión 3.2.

La opción validator requiere un documento que especifique las reglas o expresiones de validación. Puedes especificar las expresiones utilizando los mismos operadores que los operadores del query, con la excepción de $near, $nearSphere, $text, y $where.

  • La validación ocurre durante las actualizaciones e inserciones. Los documentos existentes no pasan por comprobaciones de validación hasta que se modifican.

  • No se puede especificar un validador para colecciones en las bases de datos admin, local y config.

  • No se puede especificar un validador para las colecciones de system.*.

validationLevel

string

Opcional. Determina con qué rigor MongoDB aplica las reglas de validación a los documentos existentes durante una actualización.

Novedad en la versión 3.2.

"off"
No hay validación para inserciones o actualizaciones.
"strict"
Por defecto, aplica reglas de validación a todas las inserciones y a todas las actualizaciones.
"moderate"
Aplica reglas de validación a las inserciones y a las actualizaciones en documentos válidos existentes. No apliques reglas a las actualizaciones en documentos inválidos existentes.

validationAction

string

Opcional. Determina si se debe mostrar error en documentos no válidos o solo warn sobre las infracciones, pero permite que se inserten documentos no válidos.

La validación de documentos solo se aplica a aquellos documentos según lo determinado por el validationLevel.

"error"
Los documentos predeterminados deben pasar la validación antes de la escritura. De lo contrario, la operación falla.
"warn"
No es necesario que los documentos pasen la validación. Si el documento no pasa la validación, la operación de guardar registra el fallo de validación.

indexOptionDefaults

Documento

Opcional. Permite a los usuarios especificar una configuración por defecto para los índices al crear una colección.

La opción indexOptionDefaults acepta un documento storageEngine, el cual debe tener la siguiente forma:

{ <storage-engine-name>: <options> }

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.

Novedad en la versión 3.2.

viewOn

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 db.createView().

Novedad en la versión 3.4.

pipeline

arreglo

Una matriz que consta de las etapas de la canalización de agregación. create crea la vista aplicando el especificado pipeline a la viewOn colección o vista.

La definición de la vista pipeline no puede incluir la etapa $out o $merge. Si la definición del vista incluye una pipeline anidada (por ejemplo, la definición del vista incluye la etapa $lookup o $facet), esta restricción también se aplica a las pipelines anidadas.

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.

Consulte también db.createView().

collation

Especifica por defecto la intercalación 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:

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

Al especificar la intercalación, el campo locale es obligatorio; todos los demás campos de intercalación son opcionales. Para las descripciones de los campos, consulta Documento de intercalación.

Si especificas una intercalación a nivel de colección:

  • Los índices de esa colección se crearán con esa intercalación a menos que la operación de creación del índice especifique explícitamente una intercalación diferente.

  • Las operaciones en esa colección utilizan la intercalación por defecto de la colección, a menos que especifiquen explícitamente una intercalación diferente.

    No puedes especificar varias intercalaciones para una operación. Por ejemplo, no puedes especificar diferentes intercalaciones por campo, o si realizas una búsqueda con un ordenamiento, no puedes usar una intercalación para la búsqueda y otra para el ordenamiento.

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 por defecto durante la creación de una colección, ver Especificar la intercalación.

Novedad en la versión 3.4.

writeConcern

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, mongos convierte el nivel de confirmación de escritura del comando create y su asistente db.createCollection() a "majority".

comment

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() envuelven el comando create.

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 la operación se completara.

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 particiones.

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á.

Tip

Modificado en la versión 5.0.

Cuando utilices la Stable API V1, no puedes especificar los siguientes campos en un comando create:

  • autoIndexId

  • capped

  • indexOptionDefaults

  • max

  • size

  • storageEngine

Si la implementación aplica autenticación/autorización, create requiere los siguientes privilegios:

Tarea
Privilegios requeridos

Crea una colección no limitada

createCollection en la base de datos, o

insert en la colección a crear

convertToCapped para la colección

createCollection en la base de datos

Crear una vista

createCollection en la base de datos.

Sin embargo, si el usuario tiene createCollection en la base de datos y find en la vista que desea crear, el usuario también debe tener los siguientes permisos adicionales:

  • find en la colección o vista de origen.

  • find en cualquier otra colección o vista referenciada en el pipeline, si corresponde.

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.

Para crear una colección con tamaño fijo limitada a 64 kilobytes, emite el comando en la siguiente forma:

db.runCommand( { create: "collection", capped: true, size: 64 * 1024 } )

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)".

Nota

La vista creada por este comando no se refiere a vistas materializadas. Para obtener información sobre vistas materializadas on-demand, consulta $merge en su lugar.

Cambiado en la versión 4.2.

La definición de la vista pipeline no puede incluir la etapa $out o $merge. Si la definición del vista incluye una pipeline anidada (por ejemplo, la definición del vista incluye la etapa $lookup o $facet), esta restricción también se aplica a las pipelines anidadas.

Para crear una vista utilizando el comando create, utilice la siguiente 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.

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é" }

Puede especificar opciones de configuración específicas del motor de almacenamiento al crear una colección con db.createCollection(). 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 específicas de wiredTiger.

Volver

convertToCapped

En esta página