En publicaciones pasadas he mencionado como hacer algunas operaciones básicas en MongoDB, como leer y escribir en una base de datos. Pero hay opciones mas alla de esas funciones, como búsqueda con parámetros, borrar, modificar, opciones avanzadas de modificación, entre otros; Publicaré varios post relacionados con las operaciones CRUD en MongoDB, ya muchos saben CRUD en base de datos SQL, pero en NoSQL varía de una base de datos a otra.
En esta ocasión hablaré sobre la inserción de documentos en MongoDB.
CRUD (Create, Read, Update and Delete)
En computación CRUD es el acrónimo de Crear, Obtener, Actualizar y Borrar (del original en inglés: Create, Read, Update and Delete). Es usado para referirse a las funciones básicas en bases de datos o la capa de persistencia en un software.
Create (Inserción/Crear) en MongoDB
La creación de documentos en MongoDB es relativamente fácil, recordemos que en esta base de datos los documentos están en formato JSON y son almacenados en formato BSON. Teniendo esto en cuenta, todo lo que queramos trabajar en MongoDB se tiene que hacer solo y exclusivamente en formato JSON.
En SQL se utiliza la función “INSERT INTO” para almacenar registros en una base de datos, en MongoDB existen 2 funciones “.insert” y “.save”.
Función INSERT
La función insert es la primera función para insertar documentos en una base de datos dentro de una colección.
La sintaxis es la siguiente: db.coleccion.insert( { ” documento ” } )
Ahora hay que considerar las siguientes restricciones y limitaciones:
- Si el campo “_id” esta duplicado se lanza una excepción.
- El tamaño máximo de un documento BSON es de 16 mb.
- El campo “_id” es usado como clave primaria.
- Ningún campo puede comenzar con $ y tampoco puede comenzar con un punto.
Ejemplo:
1 2 3 4 5 6 | > db.prueba.insert( ... {_id: "yograterol.me", ... url: "http://www.yograterol.me", ... descripcion: "Un blog personal donde trato de plasmar mis conocimientos" ... } ... ) |
Veamos el resultado
1 2 3 4 5 6 | > db.prueba.findOne() { "_id" : "yograterol.me", "url" : "http://www.yograterol.me", "descripcion" : "Un blog personal donde trato de plasmar mis conocimientos" } |
Ahora bien, el campo “_id” es un campo OBLIGATORIO, este campo se puede asignar como en este caso, ahora que sucede si no especificamos el campo “_id”?. Si no se especifica un “_id”, MongoDB genera un valor de 12 bytes de tipo ObjectId donde:
- 4 bytes son de timestamp (fecha y hora).
- 3 bytes del identificador de la computadora.
- 2 bytes del numero de proceso.
- 3 bytes de un contador que comienza con un número aleatorio.
Ejemplo:
1 2 3 4 5 | > db.prueba.findOne() { "url" : "http://www.yograterol.me", "descripcion" : "Un blog personal donde trato de plasmar mis conocimientos" } |
Resultado
1 2 3 4 5 6 | > db.prueba.findOne() { "_id" : ObjectId("513d2658ee90d8a99f992c02"), "url" : "http://www.yograterol.me", "descripcion" : "Un blog personal donde trato de plasmar mis conocimientos" } |
Inserción de múltiples documentos
1 2 3 4 5 6 7 8 9 10 11 12 | > db.prueba2.insert( ... [ ... {_id: "Documento1", ... bd: "Relacional", ... nombre: "PostgreSQL" ... }, ... {_id: "Documento2", ... bd: "NoSQL documental", ... nombre: "MongoDB" ... } ... ] ... ) |
Resultado
1 2 3 | > db.prueba2.find() {"_id" : "Documento1", "bd" : "Relacional", "nombre" : "PostgreSQL"} {"_id" : "Documento2", "bd" : "NoSQL documental", "nombre" : "MongoDB"} |
Función SAVE
Es similar a la función INSERT en las nuevas versiones de MongoDB.
Finalizando
En este post aprendimos a insertar documentos en MongoDB con INSERT y/o SAVE… Vimos algo de la función find sin profundizar, el próximo post se tratara del comando find(). Hasta la próxima!