
Antes de empezar el curso de MongoDB
En este archivo encontrarás los archivos necesarios del curso.
MongoDB almacena datos en documentos similares a JSON, lo que hace que la base de datos sea muy flexible y escalable.
Para poder experimentar con los ejemplos de código en este tutorial, necesitará acceso a una base de datos MongoDB.
Puede descargar una base de datos gratuita de MongoDB en https://www.mongodb.com.
Abrir la consola
Entrar a la carpeta data
Ejecutar mongo
Escribe db
Escribe use miBaseDatos
Escribe show dbs
Para crear una colección escribe db.usuarios.insert({“nombre”:”Pedro Picapiedra”})
NOTA IMPORTANTE: A partir de la versión mongodb 4.4 las herramientas de base de datos como mongoimport vienen por separado, hay que descargarla desde el sitio de mongodb.
Podemos modificar los datos con el método update().
Podemos eliminar un documento con el método remove().
Podemos consultar todos los datos de la colección con find y un objeto vacío.
El operador $set reemplaza el valor de un campo con el valor especificado.
upsert (boolean Opcional). Si se establece en verdadero, crea un nuevo documento cuando ningún documento coincide con los criterios de consulta. El valor predeterminado es falso, que no inserta un nuevo documento cuando no se encuentra ninguna coincidencia.
multi (booleano Opcional). Si se establece en verdadero, actualiza varios documentos que cumplen con los criterios de consulta. Si se establece en falso, actualiza un documento. El valor predeterminado es falso.
Podemos seleccionar ciertos campos en nuestras consultas, indicándolo como 1 para visualizarlo o cero para no visualizarlo.
Podemos ordenar una consulta con sort({campo:1}), donde 1 es ascendente y -1 descendente.
Podemos limitar la consulta con limit(numero).
Podemos saltarnos los primeros elementos de una consulta con skip(numero).
Por medio de count({condición}} podemos contar los elementos de la base de datos.
Podemos relacionar dos colecciones por medio del identificador.
Podemos acceder a información que se encuentre dentro de arreglos JSON por medio de la notación punto.
Cuando la función db.collection.find () se utiliza para buscar documentos en la colección, el resultado devuelve un puntero a la colección de documentos devueltos, que se denomina cursor.
Por defecto, el cursor se iterará automáticamente cuando se devuelva el resultado de la consulta. Pero también se puede revisar explícitamente los elementos devueltos en el cursor uno por uno.
$ eq Coincide con valores que son iguales a un valor especificado.
$ gt Coincide con valores que son mayores que un valor especificado.
$ gte Coincide con valores mayores o iguales que un valor especificado.
$ in Coincide con cualquiera de los valores especificados en una matriz.
$ lt Coincide con valores inferiores a un valor especificado.
$ lte Coincide con valores menores o iguales a un valor especificado.
$ ne Coincide con todos los valores que no son iguales a un valor especificado.
$ nin No coincide con ninguno de los valores especificados en un arreglo.
$and una cláusulas de consulta con un AND lógico que devuelve todos los documentos que coinciden con las condiciones de ambas cláusulas.
$not Invierte el efecto de una expresión de consulta y devuelve documentos que no coinciden con la expresión de consulta.
$nor Las cláusulas de consulta con un NOR lógico devuelve todos los documentos que no coinciden con ambas cláusulas.
$oruna cláusula de consulta con un OR lógico devuelve todos los documentos que coinciden con las condiciones de cualquiera de las cláusulas.
$exists Coincide con documentos que tienen el campo especificado.
$type Selecciona documentos si un campo es del tipo especificado.
$expr Permite el uso de expresiones de agregación dentro del lenguaje de consulta.
$jsonSchema Validar documentos contra el esquema JSON dado.
$mod Realiza una operación de módulo sobre el valor de un campo y selecciona documentos con un resultado especificado.
$regex Selecciona documentos donde los valores coinciden con una expresión regular especificada.
$text Realiza la búsqueda de texto.
$where Coincide con documentos que satisfacen una expresión de JavaScript.
Proporciona capacidades de expresión regular para cadenas de coincidencia de patrones en consultas. MongoDB utiliza expresiones regulares compatibles con Perl (es decir, "PCRE") versión 8.41 con soporte UTF-8.
{ <field>: { $regex: /pattern/, $options: '<options>' } }
{ <field>: { $regex: 'pattern', $options: '<options>' } }
{ <field>: { $regex: /pattern/<options> } }
$text realiza una búsqueda de texto en el contenido de los campos indexados con un índice de texto. La expresión $text tiene la siguiente sintaxis:
La búsqueda de texto asigna una puntuación a cada documento que contiene el término de búsqueda en los campos indexados. La puntuación determina la relevancia de un documento para una consulta de búsqueda dada.
Para cada campo indexado en el documento, MongoDB multiplica el número de coincidencias por el peso y suma los resultados. Con esta suma, MongoDB calcula la puntuación del documento.
El peso predeterminado es 1 para los campos indexados.
$all Arreglo de coincidencias que contienen todos los elementos especificados en la consulta.
$elemMatch Selecciona documentos si el elemento en el campo del arreglo coincide con todas las condiciones (querys) especificadas de $elemMatch.
$size Selecciona documentos si el campo arreglo tiene un tamaño especificado.
El operador $elemMatch coincide con los documentos que contienen un campo de arreglo con al menos un elemento que coincide con todos los criterios de consulta especificados (querys).
Si se especifica una sola condición <query> en la expresión no necesita usar $elemMatch.
Selecciona documentos si el campo arreglo tiene un tamaño especificado.
Las consultas no pueden usar índices para la porción $ size de una consulta, aunque las otras porciones de una consulta pueden usar índices si corresponde.
El operador de consulta $comment asocia un comentario a cualquier expresión que tome un predicado de consulta
Debido a que los comentarios se propagan al registro del perfil, agregar un comentario puede hacer que los datos de su perfil sean más fáciles de interpretar y rastrear.
Sólo se puede usar en consola.
Este operador establece una condición que deben cumplir todos documentos.
El formato es $where:cadena, donde cadena es una expresión JavaScript.
El documento actual se referencia como this, y los valores asociados a sus claves como this.clave.
Permite el uso de expresiones de agregación dentro del lenguaje de consulta.
$sum suma los elementos de un arreglo.
La parte proyect de los arreglos permite usar tres operadores para mostrar solo parte de las claves de tipo arreglo.
Estos operadores se usan en el segundo parámetro de find (proyección).
Permite que se muestre sólo el elemento del arreglo que satisface la consulta.
Sólo muestra uno de los elementos.
Regresa los valores de una clave o campo especificado.
$ currentDate Establece el valor de un campo en la fecha actual, ya sea como Fecha o Marca de tiempo.
$ min Sólo actualiza el campo si el valor especificado es menor que el valor del campo existente.
$ max Sólo actualiza el campo si el valor especificado es mayor que el valor del campo existente.
$ mul Multiplica el valor del campo por la cantidad especificada.
$rename Renombra un campo.
$unset Elimina el campo especificado de un documento.
$ set Establece el valor de un campo en un documento.
$ setOnInsert Establece el valor de un campo si una actualización resulta en una inserción de un documento. No tiene ningún efecto en las operaciones de actualización que modifican documentos existentes.
$ Actúa como marcador de posición para actualizar el primer elemento que coincide con la condición de consulta.
$ [] Actúa como marcador de posición para actualizar todos los elementos en un arreglo para los documentos que coinciden con la condición de consulta.
$ Actúa como marcador de posición para actualizar el primer elemento que coincide con la condición de consulta.
$ [] Actúa como marcador de posición para actualizar todos los elementos en un arreglo para los documentos que coinciden con la condición de consulta.
$ [ ] Actúa como marcador de posición para actualizar todos los elementos en un arreglo para los documentos que coinciden con la condición de consulta.
$ [<identificador>] Actúa como marcador de posición para actualizar todos los elementos que coinciden con la condición arrayFilters para los documentos que coinciden con la condición de consulta.
El parámetro arrayFilters especifica qué elementos a modificar en un campo de arreglo.
$ addToSet Agrega elementos a un arreglo sólo si no existen en el conjunto.
Para especificar un <campo> en un documento incrustado o un arreglo use la notación punto.
$ addToSet no garantiza un orden particular de elementos en el arreglo modificado.
Si el valor es un arreglo, $ addToSet agrega el arreglo completo como un solo elemento.
$ pop Elimina el primer o el último elemento de un arreglo.
$ push Agrega un elemento a un arreglo.
$ pull Elimina todos los elementos del arreglo que coinciden con una consulta especificada.
$ pullAll Elimina todos los valores coincidentes de un arreglo.
Por medio del operador $each podemos iterar en un arreglo con los operadores $push y $addToSet.
El modificador $position especifica la ubicación en el arreglo en la que el operador $ push inserta elementos.
Sin el modificador de posición, el operador $ push inserta elementos al final del arreglo.
Desde la versión 3.6., $position puede aceptar un valor de índice del arreglo negativo para indicar la posición comenzando desde el final, contando desde (pero sin incluir) el último elemento del arreglo.
El modificador $slice limita el número de elementos del arreglo durante una operación $push.
Para usar el modificador $slice debe aparecer con el modificador $each.
Puede pasar un arreglo vacío [] al modificador $each de modo que sólo el modificador $slice tenga efecto.
El modificador $sort ordena los elementos de un arreglo durante una operación $push.
Para usar el modificador $ sort, debe aparecer con el modificador $ each. Puede pasar un arreglo vacío [] al modificador $ each de modo que sólo el modificador $ sort tenga efecto.
Las operaciones de agregación procesan registros de datos y devuelven el resultado calculado.
Las operaciones de agregación agrupan valores de varios documentos y pueden realizar una variedad de operaciones en los datos agrupados para obtener un único resultado.
El marco de agregación de MongoDB se basa en el concepto de canalización de procesamiento de datos. Los documentos entran en una “tubería” de etapas que transforma los documentos en un resultado.
$ abs Devuelve el valor absoluto de un número.
$ add Agrega números para devolver la suma, o agrega números y una fecha para devolver una nueva fecha. Si agrega números y una fecha, trata los números como milisegundos. Acepta cualquier cantidad de expresiones de argumento, pero a lo sumo, una expresión puede resolverse en una fecha.
$ ceil Devuelve el entero más pequeño mayor o igual que el número especificado.
Devuelve un arreglo de todos los valores únicos que resultan de aplicar una expresión a cada documento en un grupo de documentos que comparten el mismo grupo por clave. El orden de los elementos en el arreglo de salida no está especificado.
$ addToSet sólo está disponible en la etapa $ group.
Concatena cadenas en una sola.
Concatena arreglos para devolver un arreglo concatenado.
Evalúa una expresión booleana para devolver una de las dos expresiones de retorno especificadas.
Construye y devuelve un objeto Date dadas las propiedades constituyentes de la fecha.
Construye y devuelve un objeto Date dadas las propiedades constituyentes de la fecha.
Convierte un objeto de fecha en una cadena de acuerdo con un formato especificado por el usuario.
Convierte una cadena de fecha / hora en un objeto de fecha.
Toma los documentos devueltos por la canalización de agregación y los escribe en una colección específica.
El operador $ out debe ser la última etapa en la tubería.
El operador $ out permite que el marco de agregación devuelva conjuntos de resultados de cualquier tamaño.
{ $out: "<coleccion-salida>" }
Ordena todos los documentos de entrada y los devuelve a la canalización en orden indicado.
{ $sort: { <field1>: <sort order>, <field2>: <sort order> ... } }
Agrupa documentos por alguna expresión especificada y envía a la siguiente etapa un documento para cada agrupación distinta.
Los documentos de salida contienen un campo _id que contiene el grupo distinto por clave.
Los documentos de salida también pueden contener campos calculados que contienen los valores de alguna expresión de acumulador agrupada por el campo _id del $ group.
$limit: Limita el número de documentos pasados a la siguiente etapa en la tubería.
$skip: Salta el número especificado de documentos que pasan a la etapa y pasa los documentos restantes a la siguiente etapa en la tubería (pipeline).
$count Pasa un documento a la siguiente etapa que contiene un recuento del número de documentos ingresados a la etapa.
Pasa los documentos con los campos solicitados a la siguiente etapa en la tubería.
Los campos especificados pueden ser campos existentes de los documentos de entrada o campos recién calculados.
{ $project: { <specification(s)> } }
Deconstruye un campo de arreglo a partir de los documentos de entrada para generar un documento para cada elemento.
Cada documento de salida es el documento de entrada con el valor del campo de arreglo reemplazado por el elemento.
{ $unwind: <field path> }
En esta clase veremos ejemplos utilizando las herramientas de agregación.
Instalación de Robo 3T, antes roboMongo.
Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.
Es un lenguaje interpretado, de tipado fuerte, dinámico y multiplataforma.
Para crear una base de datos en MongoDB, comience por crear un objeto MongoClient, luego especifique una URL de conexión con la dirección IP correcta y el nombre de la base de datos que desea crear.
MongoDB creará la base de datos si no existe y establecerá una conexión con ella.
En MongoDB, una base de datos no se crea hasta que obtiene contenido.
MongoDB espera hasta que haya creado una colección, con al menos un documento antes de que realmente cree la base de datos.
Para crear una colección en MongoDB, use el objeto de base de datos y especifique el nombre de la colección que desea crear.
MongoDB creará la colección si no existe.
En MongoDB, una colección no se crea hasta que inserta contenido.
MongoDB espera hasta que haya insertado un documento antes de que realmente cree la colección.
Puede verificar si existe una colección en una base de datos enumerando todas las colecciones.
O puede verificar una colección específica por nombre.
Un documento en MongoDB es lo mismo que un registro en bases de datos SQL.
Para insertar un registro, o documento como se llama en MongoDB, en una colección, utilizamos el método insert_one ().
El primer parámetro del método insert_one () es un diccionario que contiene los nombres y los valores de cada campo en el documento que desea insertar.
El método insert_one () devuelve un objeto InsertOneResult, que tiene una propiedad, inserted_id, que contiene el id del documento insertado.
En MongoDB usamos los métodos find y find_one para buscar datos en una colección.
Al igual que la instrucción SELECT se usa para encontrar datos en una tabla en una base de datos MySQL.
Para seleccionar datos de una colección en MongoDB, podemos usar el método find_one ().
El método find_one () devuelve la primera aparición en la selección.
Para seleccionar datos de una tabla en MongoDB, también podemos usar el método find (). El método find () devuelve todas las ocurrencias en la selección.
El primer parámetro del método find () es un objeto de consulta.
Cuando encuentre documentos en una colección, puede filtrar el resultado utilizando un objeto de consulta.
El primer argumento del método find () es un objeto de consulta y se usa para limitar la búsqueda.
Para realizar consultas avanzadas, puede usar modificadores como valores en el objeto de consulta.
P.ej. para encontrar los documentos donde el campo de "dirección" comienza con la letra "S" o superior (alfabéticamente), use el modificador mayor que: {"$ gte": "S"}.
Use el método sort () para ordenar el resultado en orden ascendente o descendente.
El método sort () toma un parámetro para "nombre de campo" y un parámetro para "dirección" (ascendente es la dirección predeterminada).
Use el valor -1 como el segundo parámetro para ordenar descendente.
Para limitar el resultado en MongoDB, usamos el método limit ().
El método limit () toma un parámetro, un número que define cuántos documentos devolver.
Podemos saltar los documentos con skip(numero).
Puede actualizar un registro o documento como se llama en MongoDB, utilizando el método update_one().
El primer parámetro del método update_one() es un objeto de consulta que define qué documento actualizar.
Si la consulta encuentra más de un registro, solo se actualiza la primera aparición.
El segundo parámetro es un objeto que define los nuevos valores del documento.
Para actualizar todos los documentos que cumplan los criterios de la consulta, use el método update_many().
Para eliminar un documento, utilizamos el método delete_one ().
El primer parámetro del método delete_one () es un objeto de consulta que define qué documento eliminar.
Si la consulta encuentra más de un documento, solo se elimina la primera aparición.
Para eliminar más de un documento, use el método delete_many ().
El primer parámetro del método delete_many () es un objeto de consulta que define qué documentos eliminar.
Para eliminar todos los documentos de una colección, pase un objeto de consulta vacío al método delete_many ().
Puede eliminar una tabla o colección como se llama en MongoDB, utilizando el método drop ().
El método drop () devuelve true si la colección se eliminó correctamente y false si la colección no existe.
MongoDB es la base de datos No SQL más populares y de más rápida adopción en el mundo. Es una base de datos de código abierto. La información la guarda en colecciones, no en tablas, como la hacen las bases de datos relacionales con SQL. Mongo guardará los datos en formato JSON, aunque en la implementación lo guarda en BSON (el formato JSON pero en binario). Las impementaciones son rápidas y sencillas. MongoDB pueden ser manejados en lenguajes como C++, C, Python, PHP, NodeJS y muchos más.
El alumno :
Aprenderá a insertar, modificar, borrar y consultar los documentos de una base de datos NoSQL.
Aprenderá los operadores lógicos y de comparación para la consulta de documentos en MongoDB.
Aplicará los modificadores de actualización de los documentos.
Aprenderá a realizar diferentes cálculos o agregaciones.
Aprenderá a realizar agregaciones en el modelo de "tubería" o "canalización".
Este curso está enfocado para los desarrolladores web y de aplicaciones que deseen aprender la base NoSQL MongoDB.
Es deseable que tengas conocimientos generales de programación conocimientos generales de manejo de base de datos, pero no son indispensables. Tendrás los archivos y los apuntes del curso.