# data[].attributes.body
Una base de datos es un “almacén” que nos permite guardar grandes cantidades de información de forma organizada para que luego podamos encontrar y utilizar fácilmente.

Desde el punto de vista informático, la base de datos es un sistema formado por un conjunto de datos almacenados en discos que permiten el acceso directo a ellos y un conjunto de programas que manipulen ese conjunto de datos.

# data[].attributes.headline
¿Cuáles son las principales diferencias entre bases de datos relacionadas y no relacionadas?

# data[].attributes.subject
¿Cuáles son las principales diferencias entre bases de datos relacionadas y no relacionadas?

# data[].attributes.body
Bases de Datos relacionales

Las bases de datos relacionales se caracterizan por ser una colección ordenada de registros que se organizan en un conjunto de tablas. Estas tablas se relacionan entre sí, dando lugar a una base de datos desde donde se puede acceder a los datos o volver a montarlos de muchas maneras diferentes sin tener que reorganizar las tablas de la base.
Para acceder a estos datos, usaremos lo que se conoce como Lenguaje de Consultas Estructuradas, (SQL, Structured Query Language). Con SQL podemos obtener y alterar datos de una forma organizada siempre y cuando tengamos en cuenta cuál es la estructura de la base de datos con la que estamos trabajando. Para ello, utilizaremos los distintos comandos que SQL pone a nuestra disposición.

Las bases de datos relacionales se organizan a través de identificadores. De este modo, cada tabla tiene un identificador único que es el que va a establecer su relación con el resto de tablas. A su vez, estos identificadores hacen que sea más fácil organizar cada una de las tablas por separado.

En cuanto a los formatos que se utilizan en este tipo de bases de datos, suele ser el formato tabla, (Un ejemplo serían las hojas de Excel o Access) y los registros se organizarían por filas y columnas.

Los principales sistemas gestores de bases de datos relacionales son: MySQL, MariaDB, SQLite, PostgreSQL, SQL Server y Oracle.

Bases de datos no relacionales

Las bases de datos no relacionales están diseñadas para modelos de datos específicos y que no necesitan ser relacionados con otros modelos. Cada tabla funciona de forma independiente y son mucho más sencillas que los modelos relacionales.

Esta sencillez de acceso y de ordenación de la base de datos hace que en el panorama actual estén cobrando más importancia que las relacionales.

Las bases de datos no relacionales pueden tener identificador único, es decir, para identificar cada uno de los registros de la base de datos, pero este identificador no se usará (generalmente) para relacionar unos registros con otros. Como veremos, la información se organiza normalmente mediante documentos y es muy útil cuando no tenemos un esquema exacto de lo que se va a almacenar.

Los principales sistemas gestores de bases de datos no relacionales son: MongoDB, Redis y Cassandra.

# data[].attributes.headline
¿Qué es un Sistema Gestor de Base de Datos? Dar tres ejemplos de este tipo de programas.

# data[].attributes.subject
¿Qué es un Sistema Gestor de Base de Datos? Dar tres ejemplos de este tipo de programas.

# data[].attributes.body
Normalmente, una base de datos requiere un programa de software de bases de datos completo, conocido como sistema de gestión de bases de datos (DBMS). Un DBMS sirve como interfaz entre la base de datos y sus programas o usuarios finales, lo que permite a los usuarios recuperar, actualizar y gestionar cómo se organiza y se optimiza la información. Un DBMS también facilita la supervisión y el control de las bases de datos, lo que permite una variedad de operaciones administrativas como la supervisión del rendimiento, el ajuste, la copia de seguridad y la recuperación.

Algunos ejemplos de software de bases de datos o DBMS populares incluyen MySQL, Microsoft Access, Microsoft SQL Server, FileMaker Pro, Oracle Database y dBASE.

# data[].attributes.body
MySQL es un sistema de gestión de base de datos relacionales (RDBMS) de código abierto respaldado por Oracle y basado en el lenguaje de consulta estructurado (SQL). MySQL funciona prácticamente en todas las plataformas, incluyendo Linux, UNIX y Windows. Aunque puede utilizarse en una amplia gama de aplicaciones, MySQL se asocia más a menudo con las aplicaciones web y la publicación en línea.

MySQL presenta algunas ventajas que lo hacen muy interesante para los desarrolladores. La más evidente es que trabaja con bases de datos relacionales, es decir, utiliza tablas múltiples que se interconectan entre sí para almacenar la información y organizarla correctamente.

Al ser basada en código abierto es fácilmente accesible y la inmensa mayoría de programadores que trabajan en desarrollo web han pasado usar MySQL en alguno de sus proyectos porque al estar ampliamente extendido cuenta además con una ingente comunidad que ofrece soporte a otros usuarios.

1. Arquitectura Cliente y Servidor: MySQL basa su funcionamiento en un modelo cliente y servidor. Es decir, clientes y servidores se comunican entre sí de manera diferenciada para un mejor rendimiento. Cada cliente puede hacer consultas a través del sistema de registro para obtener datos, modificarlos, guardar estos cambios o establecer nuevas tablas de registros, por ejemplo.

2. Compatibilidad con SQL: SQL es un lenguaje generalizado dentro de la industria. Al ser un estándar MySQL ofrece plena compatibilidad por lo que si has trabajado en otro motor de bases de datos no tendrás problemas en migrar a MySQL.

3. Vistas: Desde la versión 5.0 de MySQL se ofrece compatibilidad para poder configurar vistas personalizadas del mismo modo que podemos hacerlo en otras bases de datos SQL. En bases de datos de gran tamaño las vistas se hacen un recurso imprescindible.

4. Procedimientos almacenados. MySQL posee la característica de no procesar las tablas directamente sino que a través de procedimientos almacenados es posible incrementar la eficacia de nuestra implementación.

5. Desencadenantes. MySQL permite además poder automatizar ciertas tareas dentro de nuestra base de datos. En el momento que se produce un evento otro es lanzado para actualizar registros o optimizar su funcionalidad.

6. Transacciones. Una transacción representa la actuación de diversas operaciones en la base de datos como un dispositivo. El sistema de base de registros avala que todos los procedimientos se establezcan correctamente o ninguna de ellas. En caso por ejemplo de una falla de energía, cuando el monitor falla u ocurre algún otro inconveniente, el sistema opta por preservar la integridad de la base de datos resguardando la información.

# data[].attributes.body
Es un sistema de base de datos NoSQL orientado a documentos de código abierto y escrito en C++, que en lugar de guardar los datos en tablas lo hace en estructuras de datos BSON (similar a JSON) con un esquema dinámico. Al ser un proyecto de código abierto, sus binarios están disponibles para los sistemas operativos Windows, GNU/Linux, OS X y Solaris y es usado en múltiples proyectos o implementaciones en empresas como MTV Network, Craigslist, BCI o Foursquare.

MongoDB es una seria candidata para almacenar los datos de nuestras aplicaciones.

La principal característica a destacar de MongoDB sería la velocidad, que alcanza un balance perfecto entre rendimiento y funcionalidad gracias a su sistema de consulta de contenidos.

Consultas ad hoc. Con MongoDb podemos realizar todo tipo de consultas. Podemos hacer búsqueda por campos, consultas de rangos y expresiones regulares. Además, estas consultas pueden devolver un campo específico del documento, pero también puede ser una función JavaScript definida por el usuario.

Indexación. El concepto de índices en MongoDB es similar al empleado en bases de datos relacionales, con la diferencia de que cualquier campo documentado puede ser indexado y añadir múltiples índices secundarios.

Replicación. Del mismo modo, la replicación es un proceso básico en la gestión de bases de datos. MongoDB soporta el tipo de replicación primario-secundario. De este modo, mientras podemos realizar consultas con el primario, el secundario actúa como réplica de datos en solo lectura a modo copia de seguridad con la particularidad de que los nodos secundarios tienen la habilidad de poder elegir un nuevo primario en caso de que el primario actual deje de responder.

Balanceo de carga. Resulta muy interesante cómo MongoDB puede escalar la carga de trabajo. MongoDB tiene la capacidad de ejecutarse de manera simultánea en múltiples servidores, ofreciendo un balanceo de carga o servicio de replicación de datos, de modo que podemos mantener el sistema funcionando en caso de un fallo del hardware.

Almacenamiento de archivos. Aprovechando la capacidad de MongoDB para el balanceo de carga y la replicación de datos, Mongo puede ser utilizado también como un sistema de archivos. Esta funcionalidad, llamada GridFS e incluida en la distribución oficial, permite manipular archivos y contenido.

Ejecución de JavaScript del lado del servidor. MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas directamente a la base de datos para ser ejecutadas.

# data[].attributes.headline
¿Qué es el modelo relacional en base de datos?

# data[].attributes.subject
¿Qué es el modelo relacional en base de datos?

# data[].attributes.body
Es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente.

El modelo relacional desarrolla un esquema de base de datos (data base schema) a partir del cual se podrá realizar el modelo físico o de implementación en el DBMS.

Este modelo esta basado en que todos los datos están almacenados en tablas (entidades/relaciones) y cada una de estas es un conjunto de datos, por tanto una base de datos es un conjunto de relaciones. La agrupación se origina en la tabla: tabla -> fila (tupla) -> campo (atributo)

El Modelo Relacional se ocupa de:

La estructura de datos

La manipulación de datos

La integridad de los datos

Donde las relaciones estan formadas por :

Atributos (columnas)

Tuplas (Conjunto de filas)

Existen dos formas para la construcción de modelos relacionales:

Creando un conjunto de tablas iniciales y aplicando operaciones de normalización hasta conseguir el esquema más óptimo,

O, convertir el modelo entidad relación (ER) en tablas, con una depuración lógica y la aplicación de restricciones de integridad.

Los objetivos que este modelo persigue son:

Independencia Física: La forma de almacenar los datos no debe influir en su manipulación. Si el almacenamiento físico cambia, los usuarios que acceden a esos datos no tienen que modificar sus aplicaciones.

Independencia Lógica: Las aplicaciones que utilizan la base de datos no deben ser modificadas por que se inserten, actualicen y eliminen datos.

Flexibilidad: En el sentido de poder presentar a cada usuario los datos de la forma en que éste prefiera

Uniformidad: Las estructuras lógicas de los datos siempre tienen una única forma conceptual (las tablas), lo que facilita la creación y manipulación de la base de datos por parte de los usuarios.

Sencilles: Las características anteriores hacen que este Modelo sea fácil de comprender y de utilizar por parte del usuario final.

# data[].attributes.headline
¿Cuáles son los pasos para crear un modelo entidad - relación?

# data[].attributes.subject
¿Cuáles son los pasos para crear un modelo entidad - relación?

# data[].attributes.body
Los diagramas de entidad-relación son increíblemente útiles y tú mismo puedes crear uno fácilmente siguiendo estos pasos simples.

1. Determina las entidades: Las entidades generalmente son sustantivos como auto, banco, estudiante o producto.

En un diagrama ER, las entidades son las partes más importantes.
2. Identifica las relaciones: Las relaciones resaltan cómo las entidades interactúan entre sí.

Las relaciones generalmente son verbos como “compra”, “contiene” o “hace”.
3. Agrega atributos: Los atributos muestran características específicas de una entidad, detallando qué información es importante para el modelo.

En un diagrama ER, los atributos son necesarios para modelar qué características se incluirán con cada entidad. Los atributos como “Número ID”, “Nombre” y “SKU” son atributos comunes.
4. Completa el diagrama

Es increíblemente importante organizar el diagrama ER de una forma lógica para aumentar la comprensión. El propósito principal de los diagramas de entidad-relación es modelar una base de datos compleja, por lo que es esencial aprender cómo crear diagramas ER simples y lógicos.

# data[].attributes.body
SQL es un acrónimo en inglés para Structured Query Language.  Un Lenguaje de Consulta Estructurado. Un tipo de lenguaje de programación que te permite manipular y descargar datos de una base de datos. Tiene capacidad de hacer cálculos avanzados y álgebra. Es utilizado en la mayoría de empresas que almacenan datos en una base de datos. Ha sido y sigue siendo el lenguaje de programación más usado para bases de datos relacionales.

El lenguaje de programación SQL no solo permite realizar operaciones de selección, inserción, actualización y eliminación de datos sino también operaciones administrativas sobre las bases de datos. Por tanto, se trata de un lenguaje completo de bases de datos que va más allá de la recuperación de la información.

El SQL se usa para controlar todas las funciones que un sistema gestor de base de datos brinda a sus usuarios, proporcionando además un marco para crear la propia base de datos, gestionar su seguridad, actualizar sus contenidos, recuperar los datos y compartirlos entre diferentes usuarios.

De hecho, la mayoría de los sistemas de gestión de base de datos relacionales usan el lenguaje de programación SQL para interactuar con la base de datos. Oracle es una de las herramientas para la gestión de bases de datos más conocida y usada, pero también se encuentran Microsoft SQL, MySQL y Access, entre otros.

Lo que ha hecho que se popularice y consolide es:

Lenguaje estandarizado. Estandarizado en 1986, el lenguaje de programación SQL permite desplegar implementaciones del mismo en diferentes sistemas, usando prácticamente el mismo código para todos ellos. Por ejemplo, el lenguaje SQL de Oracle no es idéntico al de Microsoft SQL Server, pero las diferencias son mínimas, una gran ventaja porque los comandos para crear la estructura de base de datos o manipular la información comparten la misma forma.

Integridad de los datos. El SQL tiene la función de preservar la integridad de los datos, asegurándose de que sean válidos, correctos y completos. También protege la base de datos de corrupciones provocadas fallos del sistema o actualizaciones inconsistentes.

Flexibilidad. Uno de los principales motivos del éxito del lenguaje de programación SQL es su flexibilidad. Es un lenguaje muy versátil a la hora de implantar soluciones y permite definir diferentes formas de ver los datos para satisfacer las demandas específicas de los usuarios.

Sencillez y claridad. SQL es un lenguaje unificado, claro y de fácil comprensión. Su estructura incluye un elevado nivel de inglés, de manera que las sentencias en SQL son fáciles de entender y aprender.

# data[].attributes.body
Las sentencias SQL se dividen en dos categorías: lenguaje de definición de datos (DDL) y lenguaje de manipulación de datos (DML). Las sentencias DDL se utilizan para describir una base de datos, para definir su estructura, para crear sus objetos y para crear los subobjetos de la tabla.
La lista siguiente ofrece ejemplos de estos tipos de sentencias DDL:

Creación de tablas (mandato CREATE)

Modificación de la estructura de una tabla (mandato ALTER) sin suprimirla y volver a crearla, como añadir columnas, eliminar columnas o cambiar definiciones de columna (por ejemplo, longitud o los valores predeterminados)

Eliminación de objetos (como tablas) de la base de datos (mandato DROP)

Particionado de tablas (mandato PARTITION)

# data[].attributes.body
Las sentencias DML se utilizan para controlar la información contenida en la base de datos. Las listas siguientes ofrecen ejemplos de estos tipos de sentencias DML:

Adición de registros a una tabla (mandato INSERT)

Modificación de la información de una tabla (mandato UPDATE)

Eliminación de registros de una tabla (mandato DELETE)

# data[].attributes.headline
¿Cuáles son los pasos (formas normales) para realizar una normalización de una base de datos relacional?

# data[].attributes.subject
¿Cuáles son los pasos (formas normales) para realizar una normalización de una base de datos relacional?

# data[].attributes.body
La normalización es un proceso que se aplica a las bases de datos para organizar las tablas y evitar la redundancia o complejidad en los datos.
La normalización de una base de datos es la aplicación de una serie de reglas para evitar a futuro realizar queries o consultas innecesariamente complejas. En otras palabras están enfocadas en eliminar redundancias e inconsistencias de dependencia en el diseño de las tablas que creamos para organizar las bases de datos.

Tipos de normalización: 3 Formas Normales y cómo se usan

Hay reglas en la normalización de una base de datos y cada una de ellas se denomina Forma Normal. Existen 3 tipos principales.

La primera Forma Normal (1FN)

Hay que seguir una serie de pasos para normalizar, en otras palabras, para decir que nuestra tabla está en primera forma normal. Estos son:

1. Eliminar los grupos repetitivos de la tablas individuales

2. Crear una tabla separada por cada grupo de datos relacionados

3. Identificar cada grupo de datos relacionados con una clave primaria

Para identificar si lo hemos hecho de manera correcta debemos considerar los siguientes aspectos:

Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos.

La tabla contiene una clave primaria única

La clave primaria no contiene atributos nulos

No debe existir variación en el número de columnas

Los campos no clave deben identificarse por la clave (dependencia funcional)

Debe existir una independencia del orden tanto de las filas como de las columnas, es decir, si los datos cambian de orden no deben cambiar sus significados.

Una tabla no puede tener múltiples valores en cada columna

Los datos son atómicos (a cada valor de X le pertenece un valor de Y y viceversa)

La segunda Forma Normal (2FN)

Debemos seguir los siguientes pasos:

1. Tener la 1° forma normal

2. Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros

3. Relacionar estas tablas mediante una clave externa

Sabremos si nuestra base de datos tiene en la segunda forma normal si esta previamente cumple con las normas de la Primera forma Normal y si sus atributos no principales dependen de forma completa de la clave principal.

En otras palabras, que no existen dependencias parciales.

La tercera Forma Normal (3FN)

Debemos considerar los siguientes puntos:

1. Tener la 2° forma normal

2. Eliminar aquellos campos que no dependan de la clave

3. Ninguna columna puede depender de una columna que no tenga una clave

4. No puede haber datos derivados

5. Podemos decir que nuestra tabla se encuentra en tercera normal si previamente estaba en segunda forma normal y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave.

En otras palabras, todo atributo no primo es implicado por la clave primaria en una secuencia no transitiva.

# data[].attributes.headline
¿Qué es Mongo Atlass y cómo crear una cuenta?

# data[].attributes.subject
¿Qué es Mongo Atlass y cómo crear una cuenta?

# data[].attributes.body
MongoDB Atlas es la base de datos como servicio que permite implementar, utilizar y escalar una base de datos de MongoDB con tan solo unos pocos clics.

Las características que ofrece MongoDb Atlas son:

Automatización: la manera más fácil de crear, lanzar y escalar aplicaciones en MongoDB.

Flexibilidad: La única base de datos como servicio con tofo lo necesario para las aplicaciones modernas.

Seguridad: disponible varios niveles de seguridad.

Escalabilidad: gran escalabilidad sin interumpir la actividad.

Alta disponibilidad: implementaciones con tolerancia a errores y autoreparación predeterminadas.

Alto rendimiento: el rendimiento necesario para las cargas de trabajo más exigentes.

Configuración de cuenta

Nos dirigimos a la página oficial de MongoDB y seleccionamos TRY FREE y nos registramos con un correo.
Una vez puesto los datos y haber presionado en el botón “Get started free” nos redireccionará a la siguiente ventana donde nos muestra lo que tendrá nuestro clúster.
Continuamos dando clic en Create clúster.

Crear un nuevo cluster

En la página siguiente, llena los campos nombre de la organización, nombre del proyecto, selecciona JavasScript como lenguaje de programación preferido y haz clic en el botón verde para continuar.

Clic en el botón Crear un Cluster debajo de clusters compartidos. Esta debe ser la única opción libre.

En la sección Proveedor de la nube y región, deja la opción por defecto (Normalmente es AWS).

La sección Nivel de Cluster, deja la opción por defecto, M0 Sandbox (Shared RAM 512 MB Storage).

En la sección de Nombre del Cluster, puedes seleccionar el nombre del cluster, o dejar por defecto, Cluster 0.

CLic en el botón verde Create Cluster en la parte superior de la pantalla.

Debes poder ver el mensaje Your cluster is being created. New clusters take 1-3 minutes to provision Tu cluster ha sido creado. Los nuevos clusters toman entre 1-3 minutos para ser aprovisionados. Espera hasta que el cluster sea creado para ir al siguiente paso.

Crear un nuevo usuario para la base de datos

En la parte izquierda de la pantalla, clic en Acceso a la base de datos.

Clic en el botón verde Agregar un nuevo usuario a la base de datos.

En la modal, ingresar un nuevo usuario y contraseña.

En la sección Privilegios del usuario. deja las opciones por defecto, Leer y escribir en cualquier base de datos.

CLic en el botón Agregar usuario para crear tu nuevo usuario.

Permitir conexión desde cualquier IP

En la parte izquierda de la pantalla, clic en Acceso de red.

Clic en el botón verde Añadir dirección IP.

En la modal, click en el botón Permitir conexión desde cualquier lugar. Debes ver 0.0.0.0/0 en la lista de accesos.

Clic en el botón Confirmar.

Connectarte a tu cluster

Clic en el botón verde Empezar en la parte inferior izquierda de tu pantalla y ahora deberías ver el paso final, Connectate a tu cluster, clic en él.

En la parte izquierda de la pantalla, clic en Clusters.

Clic en el botón Conectar a tu cluster.

En la modal, clic en Conecta tu aplicación.

Debes poder ver el URI, lo que debes usar para conectar tu base de datos y tiene la estructura: mongodb+srv://<username>:<password>@<cluster-name>.mongodb.net/<db-name>?retryWrites=true&w=majority.

CLic en botón Copiar tu URI al portapapeles.

Observa que los campos <username>, <cluster-name> y <db-name> de la URI ya están completados para ti. Todo lo que necesitas hacer es reemplazar el campo <password> con el creado en el paso anterior.

Esto es todo, ahora tienes el URI para añadir a tu aplicación y conectarte a tu base de datos. Mantén esta URI en un lugar seguro para que puedas usarlo luego.

# data[].attributes.body
Mongoose es una librería para Node.js que nos permite escribir consultas para una base de datos de MongooDB, con características como validaciones, construcción de queries, middlewares, conversión de tipos y algunas otras, que enriquecen la funcionalidad de la base de datos.

La parte central del uso de Mongoose está en la definición de un esquema donde se indica la configuración de los documentos para una colección de MongoDB. Y aunque MongoDB es una base de datos nosql, donde los documentos se almacenan sin un esquema predefinido, el uso de un esquema te permite normalizar tu información, sin sacrificar la flexibilidad. Además, hace que la transición de sql a nosql, sea más sencilla.

En palabras prácticas, Mongoose funciona como una capa adicional sobre MongoDB a través de la cuál se implementan y automatizan muchas de las tareas habituales de trabajar con una base de datos.

Mongoose además, abre las puertas a una comunidad de plugins que puedes usar para automatizar tareas comunes, tales como el encriptado de información, paginación, consultas adicionales, y más.

# data[].attributes.headline
¿Qué significa que MongoDB tenga un esquema flexible?

# data[].attributes.subject
¿Qué significa que MongoDB tenga un esquema flexible?

# data[].attributes.body
MongoDB tiene un esquema flexible, donde las colecciones no fuerzan tener una estructura idéntica para todos los documentos. Esto significa que los documentos de la misma coleccion no necesitan tener el mismo numero de campos o estructura. Cada documento solo necesita contener un numero relevante de campos de la entidad u objeto que el documento representa. Por ejemplo pueden existir distintos tipos de usuarios en una aplicación, donde un cliente necesita información personal, mientras que un administrador solo le basta con los datos credenciales.
En la práctica la mayoria de los documentos de una colección comparte una estructura similar, pero la flexibilidad del esquema nos aporta una capacidad de modelado de los documentos independiente.

# data[].attributes.body
Colecciones (collections): almacenan registros individuales, también llamados documentos. Permite agrupar elementos que sean similares.

Documentos (documents): el término documento se refiere a la forma en que los datos son encapsulados y codificados. MongoDB usa el formato BSON (Binary JSON) para almacenar la información, aunque luego la muestra como JSON. El equivalente al término documento en bases de datos relacionales es el de fila. Cada documento contiene el nombre del dato y su contenido. Los documentos permiten anidación, por lo que un mismo documento puede representar un conjunto entero de datos de diferente naturaleza. No es necesario, por tanto, dividir los datos en distintas tablas como en las bases de datos relacionales de forma que luego sea necesario cruzarlas para obtener la entidad completa. MongoDB también permite que la estructura de los documentos en una misma colección sea distinta, permitiendo que unos documentos tengan más campos que otros por ejemplo. No obstante, los documentos tienen una limitación de 16Mb.

# data[].attributes.headline
¿Cúal es la diferencia entre JSON y BSON?

# data[].attributes.subject
¿Cúal es la diferencia entre JSON y BSON?

# data[].attributes.body
BSON es un formato de codificación de formato de serialización para JSON que se utiliza principalmente para almacenar y acceder a los documentos, mientras que JSON es un formato de archivo estándar legible por humanos que se utiliza principalmente para la transmisión de datos en forma de pares de atributos clave-valor.

BSON está diseñado de tal manera que consume menos espacio, pero no es tan eficiente como JSON. BSON, de hecho, en algunos casos, usa más espacio que JSON. La razón de esto es la transitabilidad, lo que significa que BSON agrega información adicional a los documentos, como la longitud de la cadena y los subobjetos, lo que a su vez hace que el recorrido sea más rápido.

BSON también está diseñado de manera que tiene una técnica de codificación y decodificación comparativamente más rápida. Por ejemplo, todos esos números enteros almacenados como números enteros de 32 bits para que no se analicen con ellos hacia y desde el texto. Por lo tanto, usa más espacio que JSON para enteros más pequeños, pero BSON es mucho más rápido de analizar.

Además de los puntos mencionados anteriormente, BSON utiliza tipos de datos adicionales como BinData y tipos de datos de fecha que no están disponibles en JSON. BSON amplía el modelo de tipo JSON para proporcionar tipos de datos adicionales para una codificación y decodificación más eficiente en diferentes idiomas, mientras que en el caso de JSON, no se proporciona tal disposición. Facilita el intercambio de datos y junto con XML, que es particularmente el formato principal. JSON admite todos los tipos de datos básicos que pueda imaginar, como números, cadenas y otros valores booleanos. También admite tipos de datos como hashes y matrices. El BSON utiliza el formato de tipo JSON para almacenar los datos en forma de documentos exactamente de la misma forma en que se almacenan los datos en forma de filas y columnas en una base de datos relacional .

# data[].attributes.headline
¿Cuáles operadores podemos encontrar en MongoDB y para qué se usan?

# data[].attributes.subject
¿Cuáles operadores podemos encontrar en MongoDB y para qué se usan?

# data[].attributes.body
Los operadores son símbolos especiales que ayudan a los compiladores a realizar tareas matemáticas o lógicas. MongoDB ofrece varios tipos de operadores para interactuar con la base de datos.

Tipos de Operadores de MongoDB

Hay nueve tipos de operadores, cada uno de los cuales recibe el nombre de su función. Por ejemplo, los operadores lógicos utilizan operaciones lógicas. Para ejecutarlos, tienes que utilizar una palabra clave específica y seguir la sintaxis. Sin embargo, ¡son bastante fáciles de seguir!

Operadores lógicos

Los operadores lógicos se utilizan a menudo para filtrar datos en función de las condiciones dadas. También permiten la evaluación de muchas condiciones, de las que hablaremos con más detalle.

A continuación te presentamos algunos operadores lógicos que puedes utilizar:

$and

Una condición «and» realiza una operación lógica «and» en una matriz de dos o más expresiones. Selecciona los documentos en los que se cumplen todas las condiciones de las expresiones.

$or

Una condición «or» realiza una operación lógica «or» en una matriz de dos o más expresiones. Selecciona los documentos en los que al menos una de las expresiones es verdadera.

$nor

Este operador realiza una operación lógica «nor» en una matriz utilizando una o varias expresiones. A continuación, selecciona los documentos que no cumplen las expresiones de la consulta. En términos más sencillos, hace lo contrario de la condición $or.

$not

Este operador realiza una operación lógica de «not» en una matriz para la expresión especificada. A continuación, selecciona los documentos que no coinciden con las expresiones de la consulta. Esto incluye los documentos que no contienen el campo.

Operadores de comparación

Los operadores de comparación pueden utilizarse para comparar valores en uno o más documentos.

Igual a ($eq)

Este operador coincide con los valores que son iguales al valor dado

Mayor que ($gt)

Este operador coincide si los valores son mayores que el valor dado

Menor que ($lt)

Este operador coincide si los valores son menores que el valor proporcionado

Mayor o igual que ($gte)

Este operador coincide cuando los valores son mayores o iguales que el valor dado

Menor o igual que ($lte)

Este operador sólo coincide si los valores son menores o iguales que el valor dado

En ($en)

Este operador devuelve los documentos que coinciden con los valores especificados

No en ($nin)

Este operador devuelve los documentos que no coinciden con los valores dados. Esta es la sintaxis básica del operador $nin

No es igual ($ne)

El operador $ne devuelve los documentos en los que el valor especificado no es igual

Operadores de elementos

Los operadores de consulta de elementos pueden identificar los documentos utilizando los campos del documento. Los operadores de elementos consisten en $exist y $type.

$exists

Este operador coincide con los documentos que tienen un campo especificado. Este operador tiene un valor booleano que puede ser true o false.

Si se especifica que es true, coincide con los documentos que contienen ese campo, incluidos los documentos en los que el valor del campo es nulo. Si <boolean> es false, la consulta sólo devuelve los documentos que no contienen el campo.

$type

Este operador hace coincidir los documentos según el tipo de campo especificado. Es útil cuando tienes datos muy desestructurados, o cuando los tipos de datos no son predecibles. Estos tipos de campo son tipos BSON especificados y pueden definirse por número de tipo o por alias.

# data[].attributes.headline
¿Cuales son los tipos de validaciones que podemos encontrar en MongoDB?

# data[].attributes.subject
¿Cuales son los tipos de validaciones que podemos encontrar en MongoDB?

# data[].attributes.body
Validación de documentos

Los validadores ayudan a restringir el tipo de datos que se insertan en los documentos. Los validadores se definen en la recopilación. Se requiere la creación de un validador para usar la palabra clave validador y opcional nivel de validación y acción de validación para especificar el modo de validación. La validación del documento no restringe la inserción del nuevo campo en el documento.

Sintaxis: createCollection(“collectionName”,{validator:{ fields condition }})

Validadores de esquema en una nueva colección

Palabra clave adicional $ jsonSchema para cada año fiscal junto con la propiedades adicionales valor como Falso es necesario para poner restricción a nivel de esquema. Evita que se agreguen nuevos campos en el documento.

Sintaxis: createCollection(“collectionName”,{validator: { $jsonSchema { schema condition } }})

Actualizar o crear validadores de esquema en una colección existente

Se puede crear un validador en una colección existente usando collMod

Sintaxis: runCommand({collMod:”collectionName”,validator:{schema condition}})

Eliminar validadores de esquema en una colección existente

Para eliminar validadores de esquema, es necesario configurar <strong>validationLevel</strong> como apagado.

Sintaxis: runCommand({collMod:”collectionName”,validator:{ },validationLevel:off})

Verificar validadores en una colección existente

Para verificar si la colección existente tiene validadores de esquema que se ejecutan debajo del comando. Sin especificar el nombre de la colección db.getCollectionInfos() El método proporciona detalles de validadores en todas las colecciones que residen dentro de una base de datos.

Sintaxis: getCollectionInfos({name : “collectionName”})

# data[].attributes.headline
¿Qué diferencia hay entre embeber y referenciar en MongoDB?

# data[].attributes.subject
¿Qué diferencia hay entre embeber y referenciar en MongoDB?

# data[].attributes.body
Un documento embebido es aquel que su contenido se almacena completamente dentro de otro documento, para definir el entity debemos utilizar la anotación @Embedded que indicara al framework que se trata de un documento embebido.Acompañado por la definición del entity. private Entity entity.

DBRefs son referencias de un documento a otro utilizando el valor del campo del primer documento _id, nombre de la colección (y opcionalmente el nombre de base de datos). Con esto los DBRefs permiten vincular documentos de varias colecciones para linkarse en una sola colección. Los DBRefs proporcionan en esencia una semántica común para la representación de los vínculos entre documentos. Los DBRefs también requieren consultas adicionales para devolver los documentos de referencia. Por otro lado la mayoría de los drivers ofrecen métodos de utilidad para hacer la query de la DBRef de forma automática.