Operaciones CRUD e inserción de documentos en MongoDB
Resumen
¿Cómo se realiza una operación CRUD en MongoDB?
Entender las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) es esencial al trabajar con bases de datos, y MongoDB no es la excepción. En esta guía exploramos cómo llevar a cabo estas acciones en MongoDB usando Playgrounds y conexiones a Mongo Atlas, lo que te permite administrar tus datos de manera eficiente y profesional.
¿Cómo insertamos un documento en MongoDB?
Insertar documentos en MongoDB es un proceso sencillo debido a la flexibilidad de esta base de datos. MongoDB no requiere la creación explícita de bases de datos o colecciones. Simplemente indicando su uso, MongoDB las crea automáticamente si no existen.
En este ejemplo, creamos un documento en la colección products. MongoDB automáticamente genera una base de datos si aún no está creada, demostrando su capacidad de crear sobre la marcha, facilitando la manipulación de datos.
¿Cómo realizar consultas en documentos insertados?
Una vez que los documentos están insertados, puedes consultarlos para verificar el contenido almacenado. Esto se realiza utilizando el método .find().
db.products.find();
La consulta devuelve todos los documentos de la colección products. De este modo, puedes verificar los documentos insertados, permitiéndote asegurar la integridad y consistencia de tus datos.
¿Qué ocurre con los IDs de los documentos en MongoDB?
MongoDB asigna automáticamente un ObjectId a cada documento. Este es un identificador único subrayado bajo el campo _id, asegurando que cada documento pueda identificarse correctamente sin colisiones.
Si intentas insertar duplicados de un ID que ya existe, MongoDB generará un error, evitando la duplicación dentro de la base de datos.
¿Cómo prevenir colisiones de ID?
Para quienes eligen definir sus propios IDs, deben considerar la gestión personalizada de la unicidad de los IDs. Esto es importante para evitar errores al insertar documentos adicionales con el mismo ID.
Implementa un sistema de generación de IDs único dentro de tu lógica de aplicación.
Verifica duplicados antes de insertar nuevos documentos.
Estos métodos aseguran la integridad y coherencia de tus datos, permitiéndote tomar control del sistema según tus necesidades específicas.
Con estas herramientas y métodos, manipular bases de datos en MongoDB se convierte en una tarea organizada y eficiente. A medida que desarrollas habilidades en estas operaciones, dominarás la gestión de datos como un verdadero profesional. ¡Continúa explorando y optimizando tus operaciones CRUD en MongoDB para maximizar tu habilidad con las bases de datos!
Mongo por defecto crea identificadores únicos en los documentos, pero también podemos asignarlos manualmente si así lo deseamos
db.collection.insertOne({_id:1,// id manual name:"Product 2",price:200})
solo debemos tener en cuenta que Mongo, así como genera identificadores únicos de manera automática, no nos permite que 2 o mas documentos tengan un mismo identificador, por lo cual si se asignan identificadores de manera manual, igualmente debemos estar pendientes a que estos no se repitan o tendremos un error de colisión
.
esto no es muy recomendable a mi parecer, es mejor dejar ese trabajo a Mongo y esta manera tendremos la garantía de que el id siempre será único.
para hacer esta clase tengo q tener abierto el docker?
Para esta clase debes tener Docker ya instalado y posiblemente necesites tenerlo abierto para correr los contenedores de Mongo.
No, el profesor puso el ejemplo desde el inicio con mongo atlas, recuerda que en el docker la base que está corriendo es la local.
Tengo una inquietud: En el caso de las colecciones, MongoDB tiene la flexibilidad para insertar documentos que no tengan la misma estructura? Es decir, tomando como ejemplo el insert que hizo el profesor, si en uno de esos documentos insertara otro campo, por ejemplo discount : '25%', al insertarlo no habría problema?
No hay problema , porque no es una base de datos estricta en anteriores clases explico eso sobre los datos.
Puedes insertarla sin problema, a eso se refiere una base de datos no relacional, otro ejemplo de este tipo de base de datos es Firestore.
Otras de las formas en las cuales podemos conectarnos a MongoDB es usando la PowerShell de Windows. por ejemplo en mi caso estoy virtualizando un Ubuntu Server 20.04 desde VirtualBox y estoy usando una conexión vía ssh para poder conectarme a MongoDB utilizando el comando mongosh.
Cual seria la mejor practica, que mongodb autogenere lel id o generarlo nosotros?
Por cuestión de tiempo, eficiencia y que no genera errores al crear los doc, es mejor que mongo genere los id automáticamente.
Me queda la duda ¿Por qué los _id los genera con subdoc ($oid) en donde si coloca el id único, si normalmente mongo los guarda solo como el _id?
@ChatGPT
En MongoDB, cada documento debe tener un campo único "_id" que actúa como clave principal y permite identificar de manera única el documento dentro de su colección. El valor del campo "_id" puede ser un tipo de datos diferente (como ObjectId, string, integer, etc.), pero debe ser único para cada documento.
En el caso específico del tipo de dato ObjectId, este es un identificador único generado por MongoDB que consta de 12 bytes, que incluyen un timestamp, un identificador único de máquina, un contador y un número aleatorio. Este tipo de dato es útil porque proporciona un identificador único y fácilmente ordenable para documentos, lo que puede ser importante en ciertos tipos de consultas.
Cuando se trabaja con subdocumentos en MongoDB, es posible utilizar el tipo de dato ObjectId para generar _id únicos para cada subdocumento, lo que ayuda a garantizar su unicidad en la colección en la que están incrustados. Es por eso que en algunos casos, cuando se utiliza un subdocumento como valor de un campo "_id", se utiliza la notación "$oid" para indicar que el valor es un ObjectId.
En resumen, los _id se generan con subdoc ($oid) cuando se utiliza un ObjectId como valor para un campo "_id" en un subdocumento, para garantizar su unicidad dentro de la colección y para permitir una fácil ordenación en consultas. En otros casos, el valor del campo "_id" puede ser de otro tipo de dato que no requiere el uso de "$oid".
se puede configurar mongodb para que no cree una base de datos cuando se usa el comando "USE" de igual manera con la coleccion? esto es por si llega a ver un typo y crea una base de datos con el typo
## Insertar documentos como hacerlo ?
Para poder realizar consultas mongo de tipo insert solo necesitaremos estar previamente conectados a la base de datos en este caso (Mongo Atlas) y podemos empezar a insertar nuestros documentos! :)
// Cuando ponemos en "use" un nombre //el cual no exite en nuestra//base de datos automaticamente mongo//creara una nueva base de datos //dandole el nombre que //ingresamos en este caso "plazi_store"use("plazi_store")//Algo similar sucede aca, al //poner db.products creamos //la coleccion products y//podemos insertarle nuestra informaciondb.products.insertOne({ name:"juanito perez", objetivo:"Conquistar y dominar", skills:"Seductor experto"})
Aquí les dejo un ejemplo para insertar muchos productos, con ayuda de la sentencia insertMany(), que recibe un arreglo con los productos a insertar:
db.coleccionName.insertOne({propiedad: valor,propiedad_n: valor_n,_id: id #este dato se genera en automatico por mongo y no es necesario colocarlo, aunque puedes manejarlo por tu cuenta})