MongoDB Crear Colección

En este capítulo presentamos cómo usar MongoDB para crear colecciones.

En MongoDB se utilizacreateCollection()el método para crear colecciones.

Formato de sintaxis:

db.createCollection(name, options)

Descripción de parámetros:

  • name: Nombre de la colección a crear.
  • options: Parámetro opcional, especifica opciones relacionadas con el tamaño de memoria e índices.

options puede ser los siguientes parámetros:

Nombre del parámetroTipoDescripciónValor de ejemplo
cappedBooleanoSi se crea una colección de tamaño fijo.true
sizeNuméricoTamaño máximo de la colección (en bytes). Solo válido cuandocappedes true.10485760 (10MB)
maxNuméricoNúmero máximo de documentos permitidos en la colección. Solo válido cuandocappedes true.5000
validatorObjetoExpresión para la validación de documentos.{ $jsonSchema: { ... }}
validationLevelCadenaEspecifica el nivel de rigor de la validación de documentos.
"off": No realizar validación.
"strict": Las operaciones de inserción y actualización deben pasar la validación (predeterminado).
"moderate": Solo las actualizaciones de documentos existentes deben pasar la validación, no es necesario al insertar nuevos documentos.
"strict"
validationActionCadenaEspecifica la acción cuando falla la validación de documentos.
"error": Bloquear inserción o actualización (predeterminado).
"warn": Permitir inserción o actualización, pero emitir una advertencia.
"error"
storageEngineObjetoEspecifica la configuración del motor de almacenamiento para la colección.{ wiredTiger: { ... }}
collationObjetoEspecifica la regla de ordenamiento predeterminada de la colección.{ locale: "en", strength: 2 }

Al insertar documentos, MongoDB primero verifica el campo size de la colección fija y luego el campo max.

Ejemplo de creación de una colección usando estas opciones:

Ejemplo

db.createCollection("myComplexCollection", {
  capped: true,
  size: 10485760,
  max: 5000,
  validator: { $jsonSchema: {
    bsonType: "object",
    required: ["name", "email"],
    properties: {
      name: {
        bsonType: "string",
        description: "Debe ser una cadena y es obligatorio"
      },
      email: {
        bsonType: "string",
        pattern: "^.+@.+$",
        description: "Debe ser una dirección de correo electrónico válida"
      }
    }
  }},
  validationLevel: "strict",
  validationAction: "error",
  storageEngine: {
    wiredTiger: { configString: "block_compressor=zstd" }
  },
  collation: { locale: "en", strength: 2 }
});

Este ejemplo crea una colección con las siguientes características:

  • Tamaño fijo, máximo 10MB, almacena hasta 5000 documentos.
  • Los documentos deben contenernameyemailel campo, dondenamedebe ser una cadena,emaildebe ser un formato de correo electrónico válido.
  • El nivel de validación es estricto; si falla la validación, se bloqueará la inserción o actualización.
  • Usa el motor de almacenamiento WiredTiger, con compresor de bloques zstd.
  • Utiliza la regla de ordenamiento en inglés por defecto.

Ejemplo

Crear la colección ejemplo en la base de datos test:

> use test
switched to db test
> db.createCollection("ejemplo")
{ "ok" : 1 }
>

Para ver las colecciones existentes, puedes usar elshow collectionsoshow tablescomando:

> show collections
ejemplo
system.indexes

A continuación se muestra el uso de createCollection() con varios parámetros clave:

Crea una colección de tamaño fijo, con un tamaño máximo de 5MB (5242880 bytes), que almacena hasta 5000 documentos.

db.createCollection("myCappedCollection", { capped: true, size: 5242880, max: 5000 });

En MongoDB, no necesitas crear la colección; al insertar algunos documentos, MongoDB crea la colección automáticamente.

> db.mycol2.insert({"name" : "Ejemplo"})
> show collections
mycol2
...

Crea una colección de tamaño fijo con un tamaño máximo de 1MB (1048576 bytes):

db.createCollection("myCappedCollection", { capped: true, size: 1048576 });

El siguiente ejemplo crea un validador para la colección myCollection, que requiere que los documentos tengan los campos name y age, donde name debe ser una cadena y age debe ser un entero no negativo.

Ejemplo

db.createCollection("myCollection", {
  validator: { $jsonSchema: {
    bsonType: "object",
    required: ["name", "age"],
    properties: {
      name: {
        bsonType: "string",
        description: "Debe ser una cadena y es obligatorio"
      },
      age: {
        bsonType: "int",
        minimum: 0,
        description: "Debe ser un entero y es obligatorio"
      }
    }
  }}
});
Otras extensiones