Está en la página 1de 9

Como realizar un CRUD en MongoDB

MongoDB insert – Crear/Insertar:

Para crear documentos y añadirlos a colecciones, MongoDB nos provee 2 comandos:

-InsertOne():

Este comando nos permite insertar un documento en la colección sobre la cual llamemos el método. Por
ejemplo, supongamos que queremos insertar un estudiante en nuestra colección de estudiantes. Lo
podríamos hacer de la siguiente manera:

“db.estudiantes.insertOne({

nombre: ‘Juan’,

apellido: ‘Linarez’,

edad: 21,

notas: [18,19,16],

programa: {

nombre: ‘Ingeniería en Informática’,

nivel: ‘pregrado’

})”
MongoDB nos mostrará el siguiente mensaje indicando que se insertó el documento en la colección.

De igual forma podemos comprobarlo utilizando el siguiente comando.

“db.estudiantes.find()”

Este es el método de consulta más básico, más adelante veremos más sobre estos.

Como podemos ver, MongoDB asignó un id automático al documento si no se lo proveemos nosotros en


el comando de insertOne(). En este caso genero el id «5955c3502402c97f02755f3d».

Además, vemos que podemos insertar cualquier tipo de dato en un documento:

nombre y apellido son strings.

edad es un número entero

notas es un arreglo de valores enteros

programa es un objeto JSON

– InsertMany():

Este comando como su nombre lo dice nos permite insertar varios documentos a la vez, por lo que
podemos pasar varios objetos, similares al utilizado el comando anterior, en un arreglo y separados por
comas (,). El siguiente ejemplo nos permite insertar otros 3 estudiantes utilizando un solo insertar:

“db.estudiantes.insertMany(

{[
nombre: ‘Carlos’,

apellido: ‘Sanchez’,

edad: 22,

notas: [16,14,18],

programa: {

nombre: ‘Ingeniería en Informática’,

nivel: ‘pregrado’

},

nombre: ‘Maria,

apellido: ‘Alvarado’,

edad: 25,
notas: [18,19,20],

programa: {

nombre: ‘Mención Ingeniería de Sofware’,

nivel: ‘postgrado’

},

nombre: ‘Osvaldo’,

apellido: ‘Sotomonte’,

edad: 20,

notas: [16,10,14],

programa: {
nombre: ‘Ingeniería en Informática’,

nivel: ‘pregrado’

])”

El cual muestra el siguiente mensaje, confirmando que se agregaron los documentos a la base de datos.

MongoDB find – Leer:

Para obtener los documentos almacenados en una colección, utilizamos el método find().

Si queremos obtener todos los documentos de una colección pasamos un objeto vacío como parámetro
al método. De la siguiente forma obtendríamos todos los estudiantes registrados:

“db.estudiantes.find({})”

Como parámetro al método find podemos pasar un objeto con los filtros de búsqueda que vamos a
aplicar, cada filtro está compuesto por una dupla campo:valor en la que el campo corresponde al
atributo sobre la cual se aplicará el filtro con el valor especificado. Por ejemplo, si quisiéramos retornar
todos los estudiantes que se llamen “Juan”, haríamos la siguiente consulta:

“db.estudiantes.find({nombre : ‘Juan’})”

De esta forma hacemos búsquedas en las que el criterio de búsqueda es la igualdad del campo con el
valor. Pero, y si queremos hacer búsquedas utilizando criterios de desigualdad, o mayor y menor, o
conjunción y disyunción?

Esto lo podemos conseguir utilizando operadores de consulta, para lo cual en vez de pasar una dupla
campo:valor, sustituimos el valor con un objeto formado por otra upla operador:valor, por lo que el
objeto completo estaría estructurado de la forma { campo : { operador : valor} }.

Por ejemplo, si quisiéramos buscar todos los estudiantes mayores a 23 años, utilizaríamos la siguiente
consulta:

“db.estudiantes.find({ edad : { $gt : 23 } })”

Aquí, el operador utilizado es $gt, que representa el mayor que (greater than).

Una lista completa de los operadores que podemos utilizar se encuentra en el siguiente enlace:

Operadores a utilizar en mongodb find

Para hacer búsquedas con disyunción o “and lógico” basta con pasar en el objeto de filtro, los diferentes
campos sobre los que se hará una búsqueda separados por coma. Por ejemplo, si queremos encontrar
los estudiantes de nombre “María” y mayores a 22 años lo haríamos de la siguiente manera:

“db.estudiantes.find( { edad : { $gt : 22 }, nombre : ‘Maria’ } )”

Y por el contrario para hacer búsquedas con conjunción u “o lógico” se usa el operador $or, pasándole
como valor un arreglo con las condiciones sobre las cuales se quiere buscar. Por ejemplo, si quisiéramos
encontrar los estudiantes que tuvieran de nombre “Juan” o que tengan más de 24 años, lo haríamos de
la siguiente forma:
“db.estudiantes.find( { $or : [ { nombre : ‘Juan’ }, { edad : { $gt : 24 } } ] } )”

Existen muchas más cosas que podemos agregar a nuestros criterios de búsqueda, y las veremos en el
próximo post. Ya que por ahora nos enfocaremos en búsquedas básicas y las otras operaciones del crud.

MongoDB update – Actualizar:

Para modificar documentos existentes, podemos utilizar 3 métodos: updateOne(), updateMany() y


replaceOne().

Al igual que en los insert, la única diferencia entre updateOne y updateMany es que en el primero solo
se actualizará el primer documento conseguido y en el segundo se actualizarán todos los obtenidos.

Los parámetros para ambas operaciones son los mismos:

Un filtro, que es una consulta en la cual se buscarán los elementos a ser modificados. Esta consulta tiene
la misma forma que un criterio de búsqueda utilizado en un find visto anteriormente.

Un objeto con las modificaciones a realizar. Los operadores disponibles para este parámetro se pueden
ver en el siguiente link: Operadores a utilizar en mongodb update . 3 de los más utilizados son: $set,
$unset o $rename, los cuales asignan valores al campo, remueven el campo o renombran el campo
respectivamente.

Un tercer parámetro que puede ser un objeto en el que pasemos un atributo booleano llamado upsert,
el cual si no se encuentra ningún documento que cumpla con el filtro, creará un nuevo documento con
las especificaciones que se fueran a modificar.

Por ejemplo, si quisiéramos modificar solo el primer elemento que fuera menor a 22 años y a este
documento le quisiéramos agregar un campo “apodo”. Lo haríamos de la siguiente manera:

“db.estudiantes.updateOne( {edad : { $lt : 22 } }, { $set : { apodo : ‘el elegido’} } )”

En el mensaje que nos muestra además podemos ver cuantos documentos cumplieron con el criterio y
cuantos fueron modificados, matchedCount y modifiedCount respectivamente.
Y como podemos ver si hacemos una consulta general, solo le agrego el campo nuevo al primer
elemento que cumplio el criterio al haber utilizado el updateOne.

Ahora, si queremos remover el campo “programa” a todos los estudiantes mayores a 24 años, lo
haríamos de la siguiente forma:

“db.estudiantes.updateMany( {edad : { $gt : 24 } }, { $unset : { programa : »} } )”

Y si consultamos nuevamente podemos verificar que solo se quitó el campo programa de los estudiantes
que cumplían con la condición.

Y por último está el replaceOne(), el cual reemplaza completamente el primer documento que
concuerde con el criterio con otro documento que se pasa como segundo parámetro. Al igual que con
los update, se puede agregar como parámetro el upsert para hacer que si no consigue ningún elemento
que cumpla con el criterio, lo inserte como documento nuevo.

En el siguiente ejemplo, se reemplazará el primer estudiante que tenga apellido “Linarez” por un
estudiante de nombre “William” y apellido “Smith” y sin más ningún otro campo.

Primero consultamos para verificar los datos luego.

Procedemos a ejecutar el siguiente comando:

“db.estudiantes.replaceOne({ apellido : ‘Linarez’ }, { nombre : ‘William’, apellido : ‘Smith’ } )”

Y procedemos a verificar el resultado de la operación.


MongoDB delete – Eliminar:

Finalmente, el último de las operaciones crud, el eliminar.

Al igual que insert y update, posee métodos para eliminar un elemento y múltiples: deleteOne y
deleteMany. Y ambos métodos solo reciben un parámetro: el filtro para seleccionar los documentos a
eliminar.

El el siguiente ejemplo primero vamos a eliminar al primer documento con nombre “Carlos” y luego
eliminaremos a todos los estudiantes de 20 años:

Primero consultamos los estudiantes registrados.

Eliminamos al primer “Carlos” usando el siguiente comando:

“db.estudiantes.deleteOne( { nombre : ‘Carlos’ } )”

Podemos ver que el resultado nos muestra el número de documentos eliminados en deletedCount.

Verificamos la eliminación.

Procedemos a eliminar a los estudiantes de 20 años con el siguiente comando:

“db.estudiantes.deleteMany( { edad : 20 } )”

Y verificamos por última vez.

De esta forma ya podemos realizar operaciones crud a una base de datos en MongoDB.

También podría gustarte