Original article: How to get started with MongoDB in 10 minutes
MongoDB es una rica base de datos NoSQL orientada a documentos.
Si eres un completo principiante en NoSQL, te recomiendo que eches un vistazo rápido a mi artículo sobre NoSQL publicado anteriormente.
Hoy, quería compartir algunas de las cosas básicas acerca de los comandos de MongoDB como la consulta, filtrado de datos, eliminación, actualización y así sucesivamente.
Bueno, basta de charla, ¡manos a la obra!
¿Configuración ?
Para poder trabajar con MongoDB, primero necesita instalar MongoDB en su ordenador. Para ello, visita el centro de descargas oficial y descarga la versión para tu sistema operativo específico. En este caso, he utilizado Windows.
Después de descargar la configuración del servidor de la comunidad MongoDB, pasarás por un proceso de instalación "siguiente tras siguiente". Una vez hecho esto, dirígete a la unidad C en la que has instalado MongoDB. Ve a archivos de programa y selecciona el directorio de MongoDB.
C: -> Program Files -> MongoDB -> Server -> 4.0(version) -> bin
En el directorio bin, encontrará un par de archivos ejecutables interesantes.
- mongod
- mongo
Hablemos de estos dos archivos.
mongod significa "Mongo Daemon". mongod es un proceso en segundo plano utilizado por MongoDB. El propósito principal de mongod es gestionar todas las tareas del servidor MongoDB. Por ejemplo, aceptar peticiones, responder al cliente y gestionar la memoria.
mongo es una shell de línea de comandos que puede interactuar con el cliente (por ejemplo, administradores de sistemas y desarrolladores).
Ahora veamos cómo podemos poner en marcha este servidor. Para hacerlo en Windows, primero necesitas crear un par de directorios en tu unidad C. Abre tu símbolo del sistema dentro de tu unidad C y haz lo siguiente:
C:\> mkdir data/dbC:\> cd dataC:\> mkdir db
El propósito de estos directorios es que MongoDB requiere una carpeta para almacenar todos los datos. La ruta por defecto del directorio de datos de MongoDB es /data/db en la unidad. Por tanto, es necesario que proporcionemos esos directorios así.
Si arrancamos el servidor MongoDB sin esos directorios, probablemente veremos el siguiente error:
Después de crear esos dos archivos, dirígete de nuevo a la carpeta bin que tienes en tu directorio mongodb y abre tu shell dentro de ella. Ejecuta el siguiente comando:
mongod
¡Voilà! ¿Nuestro servidor MongoDB ya está en funcionamiento?
Para poder trabajar con este servidor, necesitamos un mediador. Así que abre otra ventana de comandos dentro de la carpeta bind y ejecuta el siguiente comando:
mongo
Después de ejecutar este comando, navega a la shell en la que ejecutamos el comando mongod (que es nuestro servidor). Verás un mensaje de 'conexión aceptada' al final. Eso significa que nuestra instalación y configuración se ha realizado correctamente.
Simplemente, ejecuta en el shell mongo:
db
Configuración de variables de enterno
Para ahorrar tiempo, puede configurar sus variables de entorno. En Windows, esto se hace siguiendo los siguientes menús:
Advanced System Settings -> Environment Variables -> Path(Under System Variables) -> Edit
¡Simplemente, copia la ruta de nuestra carpeta bin y dale a OK! En mi caso es C:\Program Files\MongoDB\Server\4.0\bin
¡Ahora ya está todo listo!
Trabajar con MongoDB
Hay un montón de GUIs (Interfaz gráfica de usuario / Graphical User Interface) para trabajar con el servidor MongoDB como MongoDB Compass, Studio 3T y así sucesivamente.
Proporcionan una interfaz gráfica para que puedas trabajar fácilmente con tu base de datos y realizar consultas en lugar de usar un intérprete de comandos y escribir las consultas manualmente.
Pero en este artículo vamos a utilizar el símbolo del sistema para hacer nuestro trabajo.
Ahora es el momento de sumergirnos en los comandos de MongoDB que te ayudarán en tus futuros proyectos.
- Abre tu símbolo del sistema y escribe
mongod
para iniciar el servidor MongoDB. - Abre otro intérprete de comandos y escribe
mongo
para conectarte al servidor de bases de datos MongoDB.
1. Encontra la base de datos en la que te encuentras
db
Este comando mostrará la base de datos actual en la que se encuentra. test es la base de datos inicial que viene por defecto.
2. Listado de bases de datos
show databases
Actualmente tengo cuatro bases de datos. Ellas son: CrudDB
, admin
, config
y local
.
3. Ir a una base de datos determinada
use <your_db_name>
Aquí me he movido a la base de datos local
. Puedes comprobarlo si pruebas el comando db
para imprimir el nombre de la base de datos actual.
4. Crear una base de datos
Con los RDBMS (sistemas de gestión de bases de datos relacionales) tenemos bases de datos, tablas, filas y columnas.
Pero en las bases de datos NoSQL, como MongoDB, los datos se almacenan en formato BSON (una versión binaria de JSON). Se almacenan en estructuras denominadas "colecciones".
En las bases de datos SQL, éstas son similares a las Tablas.
Muy bien, vamos a hablar de cómo crear una base de datos en el shell mongo.
use <your_db_name>
Espera, ¡ya teníamos este comando antes! ¡¿Por qué lo estoy usando otra vez?!
En el servidor MongoDB, si tu base de datos ya está presente, usando ese comando navegarás a tu base de datos.
Pero si la base de datos no está ya presente, entonces el servidor MongoDB va a crear la base de datos para usted. Entonces, navegará dentro de ella.
Después de crear una nueva base de datos, ejecutar el comando show database
no mostrará la base de datos recién creada. Esto se debe a que, hasta que no haya datos (documentos) en ella, no se mostrará en la lista de bases de datos.
5. Crear una colección
Navega a tu base de datos recién creada con el comando use
.
En realidad, hay dos formas de crear una colección. Veamos ambas.
Una forma es insertar datos en la colección:
db.myCollection.insert({"name": "john", "age" : 22, "location": "colombo"})
Esto va a crear su colección myCollection
incluso si la colección no existe. Luego insertará un documento con el name
y la age
. Estas son colecciones no tapadas.
La segunda forma se muestra a continuación:
2.1 Crea una colección no tapada
db.createCollection("myCollection")
2.2 Creación de una colección limitada
db.createCollection("mySecondCollection", {capped : true, size : 2, max : 2})
De esta forma, va a crear una colección sin insertar datos.
Una "colección capada" tiene un número máximo de documentos que evita el desbordamiento de documentos.
En este ejemplo, he activado el capping, estableciendo su valor a true
.
El size : 2
significa un límite de dos megabytes, y max: 2
establece el número máximo de documentos en dos.
Ahora, si intentas insertar más de dos documentos en mySecondCollection
y utilizas el comando find
(del que hablaremos en breve), sólo verás los documentos insertados más recientemente. Ten en cuenta que esto no significa que el primer documento haya sido borrado - simplemente no se muestra.
6. Inserción de datos
Podemos insertar datos en una nueva colección, o en una colección que se haya creado anteriormente.
Existen tres métodos para insertar datos.
insertOne()
se utiliza para insertar un solo documento.insertMany()
se utiliza para insertar más de un documento.insert()
se utiliza para insertar tantos documentos como se desee.
A continuación se muestran algunos ejemplos:
- insertOne()
db.myCollection.insertOne(
{
"name": "navindu",
"age": 22
}
)
- insertMany()
db.myCollection.insertMany([
{
"name": "navindu",
"age": 22
},
{
"name": "kavindu",
"age": 20
},
{
"name": "john doe",
"age": 25,
"location": "colombo"
}
])
El método insert()
es similar al método insertMany()
.
Además, observe que hemos insertado una nueva propiedad llamada location
en el documento para John Doe
. Así que si usas find
, entonces verás que sólo para john doe
se adjunta la propiedad location
.
Esto puede ser una ventaja cuando se trata de bases de datos NoSQL como MongoDB. Permite la escalabilidad.
7. Consulta de datos
A continuación se explica cómo consultar todos los datos:
db.myCollection.find()
Si deseas ver estos datos de una manera más limpia, sólo tienes que añadir .pretty()
al final de la misma. Esto mostrará el documento en formato JSON bastante impreso.
db.myCollection.find().pretty()
Espera... ¿En estos ejemplos te has fijado en algo como _id
? ¿Cómo ha llegado ahí?
Bueno, cada vez que insertas un documento, MongoDB añade automáticamente un campo _id
que identifica de forma única cada documento. Si no quieres que se muestre, simplemente ejecuta el siguiente comando
db.myCollection.find({}, _id: 0).pretty()
A continuación, veremos cómo filtrar los datos.
Si desea visualizar algún documento concreto, puede especificar un único detalle del documento que desea que se muestre
db.myCollection.find(
{
name: "john"
}
)
Supongamos que desea mostrar sólo las personas cuya edad es inferior a 25 años. Puede utilizar $lt
para filtrar.
db.myCollection.find(
{
age : {$lt : 25}
}
)
Del mismo modo, $gt
significa mayor que, $lte
es "menor o igual que", $gte
es "mayor o igual que" y $ne
es "no igual".
8. Actualización de documentos
Supongamos que desea actualizar la dirección o la edad de alguien, ¿cómo podría hacerlo? Bueno, vea el siguiente ejemplo:
db.myCollection.update({age : 20}, {$set: {age: 23}})
El primer argumento es el campo del documento que desea actualizar. Aquí, especifico la age
para la simplicidad. En el entorno de producción, se podría utilizar algo así como el campo _id
.
Siempre es mejor utilizar algo como _id
para actualizar una fila única. Esto se debe a que varios campos pueden tener la misma age
y el mismo name
. Por lo tanto, si actualizas una única fila, afectará a todas las filas que tengan el mismo nombre y edad.
Si actualizas un documento de esta manera con una nueva propiedad, digamos location
por ejemplo, el documento se actualizará con el nuevo atributo. Y si haces find
, entonces el resultado será:
Si necesitas eliminar una propiedad de un único documento, podrías hacer algo como esto (digamos que quieres que desaparezca age
):
db.myCollection.update({name: "navindu"}, {$unset: age});
9. Eliminar un documento
Como he mencionado antes, al actualizar o eliminar un documento, sólo tienes que especificar el _id
no sólo name
, age
, location
.
db.myCollection.remove({name: "navindu"});
10. Eliminar una colección
db.myCollection.remove({});
Nota, esto no es igual al método drop()
. La diferencia es que drop()
se utiliza para eliminar todos los documentos dentro de una colección, pero el método remove()
se utiliza para eliminar todos los documentos junto con la propia colección.
Operadores lógicos
MongoDB proporciona operadores lógicos. La siguiente imagen resume los diferentes tipos de operadores lógicos.
Supongamos que deseas mostrar las personas cuya edad es inferior a 25 años y cuya localidad es Colombo. ¿Qué podríamos hacer?
¡Podemos utilizar el operador $and
!
db.myCollection.find({$and:[{age : {$lt : 25}}, {location: "colombo"}]});
Por último, pero no por ello menos importante, hablemos de la agregación.
Agregación
Un rápido recordatorio de lo que aprendimos sobre las funciones de agregación en las bases de datos SQL:
En pocas palabras, la agregación agrupa valores de varios documentos y los resume de alguna manera.
Imaginemos que tenemos estudiantes de ambos sexos en una colección recordBook
y queremos un recuento total de cada uno de ellos. Para obtener la suma de hombres y mujeres, podríamos utilizar la función de agregación $group
.
db.recordBook.aggregate([
{
$group : {_id : "$gender", result: {$sum: 1}}
}
]);
Conclusión
Así, hemos discutido los fundamentos de MongoDB que podrías necesitar en el futuro para construir una aplicación. Espero que hayas disfrutado de este artículo, ¡gracias por leerlo!
Si tienes alguna duda con respecto a este tutorial, ponte en contacto conmigo en Facebook o Twitter o Instagram.
¡Nos vemos en el próximo artículo! ❤️ ✌?