DEV Community

JessicaMeleroDev
JessicaMeleroDev

Posted on • Updated on

Consultas básicas en MongoDB por terminal

Si eres de las personas que no les gusta usar los distintos programas que hay para el manejo de las base de datos o simplemente quieres saber cómo manejarte por consola, aquí puedes ver algunos ejemplos de consultas básicas.

Para entrar en la terminal de MongoDB ejecuta en tu terminal mongo o mongod.

Si aparece algo similar a lo siguiente, entonces todo está correcto.

MongoDB shell version v4.0.11
connecting to: tu_mongo_uri
Implicit session: session { "id" : UUID("tu_mongo_id") }
MongoDB server version: 4.0.11
Enter fullscreen mode Exit fullscreen mode

Una vez dentro, puedes ejecutar el siguiente comando usando la palabra show para ver todas tus bases de datos:

> show databases 
Enter fullscreen mode Exit fullscreen mode

o puedes abreviarlo

> show dbs
Enter fullscreen mode Exit fullscreen mode

Este comando mostrará un listado de bases de datos con los GB que ocupan.

Para poder ejecutar cualquier consulta tienes que seleccionar la base de datos sobre la que quieres realizar dicha consulta. Con la palabra use ejecuta:

> use nombre_db
Enter fullscreen mode Exit fullscreen mode

Este comando no muestra nada, pero ya le estás diciendo a mongo que quieres usar esa base de datos. Al igual que el comando > show dbs que muestra las bases de datos, existe uno parecido para mostrar todas las tablas:

> show tables
Enter fullscreen mode Exit fullscreen mode

o también

> show collections
Enter fullscreen mode Exit fullscreen mode

Ahora hay que seleccionar la tabla o colección para poder realizar operaciones sobre ella. Para ello se usa la misma sentencia que para seleccionar una base de datos pero poniendo el nombre de nuestra tabla.

Una vez seleccionada ya podemos hacer consultas sobre ella.

Operaciones CRUD 💻

Find (👀)

La primera consulta es la más sencilla, recoger todos los documentos de la tabla o colección. Ejecutamos lo siguiente:

> db.mascotas.find()
Enter fullscreen mode Exit fullscreen mode

Si queremos encontrar un documento específico filtrando por algún campo, cambiaremos find() por findOne() y dentro del paréntesis se pone el filtro que queremos. Como por ejemplo:

> db.mascotas.findOne({nombre: "Enki"})
Enter fullscreen mode Exit fullscreen mode

Create ➕

Para crear un nuevo registro en nuestra base de datos usamos el método save() y dentro de sus paréntesis ponemos los datos coincidiendo con el modelo de datos. Ejemplo:

> db.mascotas.save({"nombre":"Duna", "especie":"Felino", "sexo":"Hembra", "edad":1, "propietario":"Jessica Melero"})
Enter fullscreen mode Exit fullscreen mode

Si todo ha ido bien mostrará:

WriteResult({ "nInserted" : 1 })
Enter fullscreen mode Exit fullscreen mode

Update ✏️

Para poder actualizar un documento usaremos el método updateOne() y la palabra $set. En este caso hay que pasarle dos parámetros, el primero es el filtro por el que buscará mongo para encontrar el documento que va a editar. Y el segundo son los parámetros que se van a modificar que puede ser simplemente uno o varios. Dejo un ejemplo de cada caso.

> db.mascotas.updateOne({nombre:"Enki"}, {$set: {edad: 4})
Enter fullscreen mode Exit fullscreen mode
> db.mascotas.updateOne({nombre:"Enki"}, {$set: {edad: 4, propietario: "Jessica"})
Enter fullscreen mode Exit fullscreen mode

☝️Fíjate en la segunda propiedad que vas a actualizar. Asegúrate de que está dentro de los corchetes de $set: {} y no fuera. Puedes poner tantas propiedades como desees actualizar.

Si todo ha ido bien aparecerá:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
Enter fullscreen mode Exit fullscreen mode

En el caso de que no encuentre el documento aparecerá "matchedCount":0 y "modifiedCount":0.

Delete ❌

Para eliminar un documento de la base de datos usaremos el método deleteOne() y el parámetro que le pasamos es similar a cuando buscamos un documento en concreto. Voy a poner un ejemplo para que se vea mejor:

> db.mascotas.deleteOne({nombre:"Duna"})
Enter fullscreen mode Exit fullscreen mode

Si todo va bien aparecerá algo similar al mensaje de actualizar un documento pero sin "matchedCount":0.

{ "acknowledged" : true, "deletedCount" : 1 }
Enter fullscreen mode Exit fullscreen mode

Este comando para eliminar un documento, pero si quieres eliminar una colección entera entonces tienes que ejecutar el método drop()

> db.mascotas.drop()
Enter fullscreen mode Exit fullscreen mode

Si no hay ningún error aparecerá true, si no puede eliminar la colección devolverá false.

ℹ️ Para salir de la consola escribe > exit

🎯 TIP

Como habrás podido observar, cuando haces un find() o findOne(), la consola te muestra todo sin formato. Existe un método llamado pretty() que se coloca justo después que deja el código en formato json.

Sin formato
> db.mascotas.find()
{ "_id" : ObjectId("id_mongo"), "nombre" : "Enki", "especie" : "conejo", "sexo" : "Macho", "edad" : 5, "propietario" : "Jessica" }
{ "_id" : ObjectId("id_mongo"), "nombre" : "Duna", "especie" : "felino", "sexo" : "Hembra", "edad" : 1, "propietario" : "Maria" }
Enter fullscreen mode Exit fullscreen mode
Con formato
> db.mascotas.find().pretty()
{
    "_id" : ObjectId("id_mongo"),
    "nombre" : "Enki",
    "especie" : "conejo",
    "sexo" : "Macho",
    "edad" : 5,
    "propietario" : "Jessica"
}
{
    "_id" : ObjectId("id_mongo"),
    "nombre" : "Duna",
    "especie" : "felino",
    "sexo" : "Hembra",
    "edad" : 1,
    "propietario" : "Maria"
}
Enter fullscreen mode Exit fullscreen mode

Espero que haya servido de ayuda 😊
Si surge algún error en algunas de estas consultas dejarla en los comentarios y las resolvemos.
thanks

Top comments (0)