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ámetro | Tipo | Descripción | Valor de ejemplo |
|---|---|---|---|
capped | Booleano | Si se crea una colección de tamaño fijo. | true |
size | Numérico | Tamaño máximo de la colección (en bytes). Solo válido cuandocappedes true. | 10485760 (10MB) |
max | Numérico | Número máximo de documentos permitidos en la colección. Solo válido cuandocappedes true. | 5000 |
validator | Objeto | Expresión para la validación de documentos. | { $jsonSchema: { ... }} |
validationLevel | Cadena | Especifica 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" |
validationAction | Cadena | Especifica 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" |
storageEngine | Objeto | Especifica la configuración del motor de almacenamiento para la colección. | { wiredTiger: { ... }} |
collation | Objeto | Especifica 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
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 contener
nameyemailel 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
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"
}
}
}}
});