Últimas entradas

MongoDB, operaciones CRUD

MongoDB es una base de datos NoSQL de documentos que ofrece una gran escalabilidad y flexibilidad, y un modelo de consultas e indexación avanzado, esto quiere decir que en lugar de guardar los datos en registros, guarda los datos en documentos, estos documentos son almacenados en BSON, que es una representación binaria de JSON.

Instalación con Docker

docker run --name some-mongo -d mongo:3.6.22-xenial
docker ps | grep "mongo"

Acceder al contenedor

docker exec -it mongo /bin/bash
root@5ccbbaf9e457:/# mongo
MongoDB shell version v3.6.22
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f2614143-9aed-40d7-a9b0-5db870a662b6") }
MongoDB server version: 3.6.22
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	http://docs.mongodb.org/
Questions? Try the support group
	http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2020-01-18T02:38:28.718+0000 I STORAGE  [initandlisten] 
2020-01-18T02:38:28.718+0000 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-01-18T02:38:28.718+0000 I STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-01-18T02:38:30.238+0000 I CONTROL  [initandlisten] 
2020-01-18T02:38:30.238+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2020-01-18T02:38:30.238+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2020-01-18T02:38:30.238+0000 I CONTROL  [initandlisten] 

Listar Bases de datos

> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

Son muchas las operaciones que se pueden hacer en MongoDB, entre las mas esenciales son insertar, obtener, actualizar y eliminar un documento.

Supongamos que nuestro esquema en la base de datos se llama cmr y tenemos una colección personas para almacenar nuestros documentos, antes de iniciar nuestra operaciones deberemos el esquema donde queremos trabajar.

use cmr

Insertar documentos

Para insertar un nuevo documento, ejecutaremos la instrucción *insert* sobre la colección, indicando los atributos que componen el documento de la siguiente forma:

db.personas.insert({ })
> db.personas.insert({ nombre : "Jorge", Apellidos : "Rodriguez", genero : "M" })
WriteResult({ "nInserted" : 1 })
> db.personas.insert({ nombre : "Angela", Apellidos : "Baca", genero : "F" })
WriteResult({ "nInserted" : 1 })

Consultar documentos

Para buscar documentos utilizamos la operación *find* combinándola con una serie de operadores que permiten configurar el filtro de búsqueda.

db.personas.find({ })
> db.personas.find({ })
{ "_id" : ObjectId("602dd7c5160562c0f7c98333"), "nombre" : "Jorge", "Apellidos" : "Rodriguez", "genero" : "M" }
{ "_id" : ObjectId("602dd7d9160562c0f7c98334"), "nombre" : "Angela", "Apellidos" : "Baca", "genero" : "F" }
> db.personas.find({ genero : "M" })
{ "_id" : ObjectId("602dd7c5160562c0f7c98333"), "nombre" : "Jorge", "Apellidos" : "Rodriguez", "genero" : "M" }

Actualizar documentos

Para actualizar un documento, ejecutaremos la instrucción *update* sobre la colección.

db.personas.update({ })
> db.personas.update({ nombre : "Jorge"}, { $set : {Apellidos : "Rodriguez Flores"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.personas.find({ })
{ "_id" : ObjectId("602dd7c5160562c0f7c98333"), "nombre" : "Jorge", "Apellidos" : "Rodriguez Flores", "genero" : "M" }
{ "_id" : ObjectId("602dd7d9160562c0f7c98334"), "nombre" : "Angela", "Apellidos" : "Baca", "genero" : "F" }

Eliminar documentos

Para eliminar un conjunto de documentos de una colección, ejecutaremos la instrucción *remove* indicando el filtro que deben cumplir todos aquellos documentos que queramos eliminar:

db.personas.update({ })
> db.personas.remove({ nombre : "Jorge"})
WriteResult({ "nRemoved" : 1 })
> db.personas.find({ })
{ "_id" : ObjectId("602dd7d9160562c0f7c98334"), "nombre" : "Angela", "Apellidos" : "Baca", "genero" : "F" }

A partir de la versión 3.2, aunque la operación remove se puede seguir utilizando, existen otras dos instrucciones para eliminar un sólo documento (deleteOne) o eliminar de forma múltiple (deleteMany).

Fuente

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *