11 consultas y operaciones de MongoDB que debe conocer

MongoDB es una de las bases de datos NoSQL más deseadas y admiradas para el desarrollo profesional. Su flexibilidad, escalabilidad y capacidad para manejar grandes volúmenes de datos lo convierten en la mejor opción para las aplicaciones modernas. Si desea dominar las consultas y operaciones regulares de MongoDB, está en el lugar correcto.

MUO VÍDEO DEL DÍA

DESPLAZAR PARA CONTINUAR CON EL CONTENIDO

Ya sea que esté buscando recuperar y manipular datos de manera eficiente, implementar modelos de datos sólidos o crear aplicaciones receptivas, adquirir una comprensión profunda de las consultas y operaciones comunes de MongoDB sin duda mejorará sus habilidades.

1. Crear o cambiar bases de datos

Crear una base de datos localmente a través de MongoDB Shell es sencillo, especialmente si ha configurado un clúster remoto. Puede crear una nueva base de datos en MongoDB con el comando de uso:

 use db_name 

Si bien el comando anterior crea una nueva base de datos, puede usarlo para cambiar a una base de datos existente sin crear una nueva desde cero.

2. Soltar base de datos

Primero, cambie a la base de datos que desea descartar usando el comando de uso como se hizo anteriormente. Luego suelte la base de datos usando el comando dropDatabase():

 use db_name
db.dropDatabase()

3. Crea una colección

Para crear una colección, cambie a la base de datos de destino. Utilice la palabra clave createCollection() para crear una nueva colección de MongoDB:

 db.createCollection("collection_name")

Reemplace collection_name con el nombre de su colección elegida.

4. Insertar documento en una colección

Mientras envía datos a una colección, puede insertar un solo documento o una serie de documentos.

Para insertar un solo documento:

 db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})

También puede usar el método anterior para insertar una serie de documentos con una ID:

 db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])

Para insertar muchos documentos a la vez, cada uno con ID separados, use la palabra clave insertMany:

 db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])

5. Obtenga todos los documentos de una colección

Puede consultar todos los documentos de una colección utilizando la palabra clave find():

 db.collection_name.find()

Lo anterior devuelve todos los documentos dentro de la colección especificada:

También puede limitar los datos devueltos a un número específico. Por ejemplo, puede usar el siguiente comando para obtener solo los dos primeros documentos:

 db.collection_name.find().limit(2)

6. Filtrar documentos en una colección

Hay muchas formas de filtrar documentos en MongoDB. Considere los siguientes datos, por ejemplo:

Si consulta solo un campo específico en un documento, use el método de búsqueda:

 db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

Lo anterior devuelve todos los documentos donde el valor de Me gusta es Wordle. Solo genera los nombres e ignora la identificación del documento.

También puede filtrar una colección por un factor numérico. Digamos que desea obtener los nombres de todos los usuarios mayores de 21 años, use el operador $gt:

 db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

La salida se ve así:

Intente reemplazar find con findOne para ver qué sucede. Sin embargo, hay muchas otras palabras clave de filtrado:

  • $lt: Todos los valores menores que el especificado.
  • $gte: Valores iguales o mayores al especificado.
  • $lte: Valores menores o iguales al definido.
  • $eq: Obtiene todos los valores iguales al especificado.
  • $ne: Todos los valores no iguales al especificado.
  • $in: use esto cuando realice consultas basadas en una matriz. Obtiene todos los valores que coinciden con cualquiera de los elementos de la matriz. La palabra clave $nin hace lo contrario.

7. Ordenar consultas

Ordenar ayuda a organizar la consulta en un orden específico. Puede ordenar en orden descendente o ascendente. Tenga en cuenta que la clasificación requiere una referencia numérica.

Por ejemplo, para ordenar en orden ascendente:

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})

Para ordenar la consulta anterior en orden descendente, reemplace «1» con «-1».

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})

8. Actualizar un documento

Las actualizaciones de MongoDB requieren operadores atómicos para especificar cómo desea que se realice la actualización. Aquí hay una lista de operadores atómicos de uso común que puede emparejar con una consulta de actualización:

  • $set: agregue un nuevo campo o cambie un campo existente.
  • $push: inserta un nuevo elemento en una matriz. Combínalo con el operador $each para insertar muchos elementos a la vez.
  • $pull: elimina un elemento de una matriz. Úselo con $in para eliminar muchos elementos de una sola vez.
  • $unset: eliminar un campo de un documento.

Para actualizar un documento y agregar un nuevo campo, por ejemplo:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})

Lo anterior actualiza el documento especificado como se muestra:

Eliminar el campo de correo electrónico es sencillo con el operador $unset:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})

Considere los siguientes datos de muestra:

Puede insertar un elemento en el campo de matriz de elementos existente utilizando el operador $push:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})

Aquí está la salida:

Utilice el operador $each para insertar muchos elementos a la vez:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})

Aquí está la salida:

Como se mencionó, el operador $pull elimina un elemento de una matriz:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

Los datos actualizados se ven así:

Incluya la palabra clave $in para eliminar muchos elementos de una matriz a la vez:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }}) 

9. Eliminar un Documento o un Campo

La palabra clave deleteOne o deleteMany desecha un documento de una colección. Use deleteOne para eliminar un documento basado en un campo específico:

 db.collection_name.deleteOne({"Name":"IDNoble"})

Si desea eliminar muchos documentos con claves en común, utilice deleteMany en su lugar. La consulta a continuación elimina todos los documentos que contienen Ajedrez como sus Me gusta.

 db.collection.deleteMany({"Likes":"Chess"})

10. Operación de indexación

La indexación mejora el rendimiento de las consultas al optimizar la cantidad de documentos que MongoDB necesita escanear. A menudo, es mejor crear un índice en los campos que consulta con más frecuencia.

La indexación de MongoDB es similar a cómo usa los índices para optimizar las consultas SQL. Por ejemplo, para crear un índice ascendente en el campo Nombre:

 db.collection.createIndex({"Name":1})

Para enumerar sus índices:

 db.collection.getIndexes()

Lo anterior es sólo un preámbulo. Hay varios otros métodos para crear un índice en MongoDB.

11. Agregación

La canalización de agregación, una versión mejorada de MapReduce, le permite ejecutar y almacenar cálculos complejos desde dentro de MongoDB. A diferencia de MapReduce, que requiere escribir el mapa y las funciones de reducción en funciones de JavaScript separadas, la agregación es sencilla y solo utiliza métodos integrados de MongoDB.

Considere los siguientes datos de ventas, por ejemplo:

Usando la agregación de MongoDB, puede calcular y almacenar la cantidad total de productos vendidos para cada categoría de la siguiente manera:

 db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])

La consulta anterior devuelve lo siguiente:

Consultas maestras de MongoDB

MongoDB ofrece muchos métodos de consulta, incluidas funciones para mejorar el rendimiento de las consultas. Independientemente de su lenguaje de programación, las estructuras de consulta anteriores son rudimentarias para interactuar con una base de datos MongoDB.

Sin embargo, puede haber algunas discrepancias en las sintaxis base. Por ejemplo, mientras que algunos lenguajes de programación como Python reconocen los casos de serpiente, otros, incluido JavaScript, usan el caso de camello. Asegúrese de investigar qué funciona para la tecnología elegida.