INSERCIÓN Y LECTURA EN MONGO DB

Clase 15 de 31Curso de Mongo DB 2018

INSERCIÓN Y LECTURA EN MONGO DB

La acción de inserción en MongoDb puede realizarse de varias formas, usando los distintos métodos que mongoDb ofrece:

Insert:

mongo1.JPG

El primer parámetro (<document or array of documents>) hace referencia al JSON o arreglo de JSONs que se almacenarán en la base de datos.

El segundo parámetro será un JSON opcional con los modificadores del método.

WriteConcern describe la garantía con la que MongoDB ha hecho una escritura, es decir garantiza que se ha almacenado el (ó los) documento(s).

MongoDB ofrece diferentes niveles de write concern que pueden usarse según las necesidades de la aplicación, además en MongoDB es el cliente el que puede ajustar este nivel en función de si le interesa rendimiento o asegurar persistencia.

La opción w se usa para solicitar el reconocimiento de que la operación de escritura se ha propagado a un número específico de instancias mongod o a instancias mongod con etiquetas especificadas.

W puede tomar los siguientes valores:

<número> Solicita el reconocimiento de que la operación de escritura se ha propagado al número especificado de instancias mongod. Por ejemplo:

w: 1 Solicita el reconocimiento de que la operación de escritura se ha propagado a un servidor mongod independiente o al primario en un conjunto de réplicas. este es el valor predeterminado.

w: 0 No solicita verificación posterior de la operación de escritura. Sin embargo, w: 0 puede devolver información sobre excepciones o errores de red a la aplicación.

Los números mayores que 1 son válidos sólo para que los conjuntos de réplicas soliciten el reconocimiento de un número específico de miembros, incluido el primario.

"Majority" Solicita el reconocimiento de que las operaciones de escritura se han propagado a la mayoría de los nodos, incluido el primario.

<conjunto de etiquetas> Solicita el reconocimiento de que las operaciones de escritura se han propagado a un miembro del conjunto de réplicas con la etiqueta especificada.

La opción j es usada para solicitar el reconocimiento de que la operación de escritura se ha escrito en el “journal” de mongoDb.

¿Qué es el journal?

Un registro de transacciones binario secuencial utilizado para llevar la base de datos a un estado válido en el caso de un cierre inesperado del servidor. MongoDB habilita el registro del journal de manera predeterminada para las versiones de 64 bits a partir de la versión 2.0 en adelante. El journal existe como archivos en el directorio de datos del servidor.

La opción wtimeout se usa para especificar un límite de tiempo para evitar que las operaciones de escritura se bloqueen indefinidamente.

Esta opción espera el límite de tiempo en milisegundos, y solo es aplicable para valores w mayores que 1.

wtimeout hace que las operaciones de escritura vuelvan con un error después del límite especificado, incluso si el problema de escritura requerido eventualmente tendrá éxito. Cuando estas operaciones de escritura regresan, MongoDB no deshace las modificaciones exitosas de datos realizadas antes de que los reconocimientos de escritura excedan el límite de tiempo de espera.

Para información más detallada de writeconcern: https://docs.mongodb.com/manual/reference/write-concern/

insertOne

mongo2.JPG

De forma similar que insert, insertOne recibe el JSON del documento a insertar como primer parámetro, pero como segundo solo admite writeConcern.

La diferencia con insert es que éste método sólo admite un documento y no un conjunto de documentos a insertar.

Mas detalles: https://docs.mongodb.com/manual/reference/method/db.collection.insertOne/#db.collection.insertOne

insertMany

mongo3.JPG

A diferencia de insertOne, el método insertMany espera recibir un arreglo de JSONs.

Por defecto los documentos se insertan en orden.

Si el ordenamiento ordenado se establece en falso, los documentos se insertarán desordenadamente. El servidor puede reordenarlos posteriormente para aumentar el rendimiento. Como buena práctica las aplicaciones no deberían depender del orden de las inserciones.

El número de operaciones en cada grupo no puede exceder el valor del maxWriteBatchSize de la base de datos. A partir de MongoDB 3.6, este valor es de 100,000 escrituras.

En cuanto a la Lectura…

El método find recibe dos parámetros opcionales en forma de JSON: el primero representa el filtro y el segundo la proyección el cual determina qué campos se devuelven en los documentos coincidentes.

mongo4.JPG

Existen operadores que son palabras claves para controlar ciertos comportamientos de cada consulta.

Los operadores son claramente identificados por que son palabras clave precedidos por signos de pesos.

Por ejemplo realizar la búsqueda en donde el campo qty sea mayor al número 4:

mongo5.JPG

Operadores de comparación:

$gt Coincide con los valores que son mayores que un valor especificado. $eq Coincide con valores que son iguales a un valor especificado. $gte Coincide con los valores que son mayores o iguales a un valor especificado. $en Coincide con cualquiera de los valores especificados en una matriz. $lt Coincide con los valores que son menores que un valor especificado. $lte Coincide con los valores que son 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 una matriz.

https://docs.mongodb.com/manual/reference/operator/query-comparison/

Operadores lógicos

$and une cláusulas de consulta con un AND lógico 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 une cláusulas de consulta con un NOR lógico devuelve todos los documentos que no coinciden con ambas cláusulas. $or une cláusulas de consulta con un OR lógico devuelve todos los documentos que cumplen las condiciones de cualquiera de las cláusulas.

https://docs.mongodb.com/manual/reference/operator/query-logical/

Operadores de elementos

$exists Coincide con documentos que tienen el campo especificado. $type Selecciona documentos si un campo es del tipo de dato especificado.

https://docs.mongodb.com/manual/reference/operator/query-element/

Operadores de Evaluación

$expr Permite el uso de expresiones de agregación dentro del lenguaje de consulta. $jsonSchema Valide documentos con el esquema JSON dado. $mod Realiza una operación de módulo en el valor de un campo y selecciona documentos con un resultado específico. $regex Selecciona documentos donde los valores coinciden con una expresión regular especificada. $text Realiza búsqueda de texto. $where combina documentos que satisfacen una expresión de JavaScript.

https://docs.mongodb.com/manual/reference/operator/query-evaluation/

Operadores Geoespaciales

$geoIntersects Selecciona geometrías que se intersecan con una geometría GeoJSON. $geoWithin Selecciona geometrías que se encuentran dentro de una geometría GeoJSON $near Devuelve objetos geoespaciales en la proximidad de un punto. $nearSphere Devuelve objetos geoespaciales cerca de un punto en una esfera.

https://docs.mongodb.com/manual/reference/operator/query-geospatial/

Operadores con arreglos

$all Coincide con las matrices que contienen todos los elementos especificados en la consulta. $elemMatch Selecciona documentos si el elemento en el campo de matriz coincide con las condiciones especificadas. $tamaño Selecciona documentos si el campo de matriz es un tamaño especificado.

https://docs.mongodb.com/manual/reference/operator/query-array/