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

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

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 se puede 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 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 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.

Nuevo 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"
Los documentos no necesitan pasar la validación. Si el documento no la supera, la operación de escritura registra el fallo.

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.

Nuevo 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().

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

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 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:

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

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

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.

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

Tip

Modificado en la versión 5.0.

Al utilizar la API estable1 V, no puede especificar los siguientes campos en un create comando:

  • 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 limitada a 64 kilobytes, emita el comando en el siguiente formato:

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

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

Volver

convertToCapped

En esta página