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

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

# data[].attributes.body
MongoDB es una base de datos de documentos que ofrece una gran escalabilidad y flexibilidad, y un modelo de consultas e indexación avanzado.

MongoDB almacena datos en documentos flexibles similares a JSON, por lo que los campos pueden variar entre documentos y la estructura de datos puede cambiarse con el tiempo.

MongoDB es una base de datos distribuida en su núcleo, por lo que la alta disponibilidad, la escalabilidad horizontal y la distribución geográfica están integradas y son fáciles de usar.

El modelo de documento se asigna a los objetos en el código de su aplicación para facilitar el trabajo con los datos.

----------------------------------------
Se crea una cuenta en la página oficial, con el correo o con google directamente.

# 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.

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.

# 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 almacena datos en documentos flexibles, similares a JSON, lo que facilita la persistencia y la combinación de datos de cualquier estructura.

El modelo de documento se asigna a los objetos en el código de su aplicación, lo que facilita el trabajo de los datos, sin renunciar a los controles de gobierno de esquema, acceso a datos, agregaciones complejas y una rica funcionalidad de indexación.

Puede modificar dinámicamente el esquema sin tiempo de inactividad. Dedica menos tiempo a preparar sus datos para la base de datos y más tiempo a poner sus datos a trabajar.

# data[].attributes.body
Colecciones:  almacenan registros individuales, también llamados documentos. Permite agrupar elementos que sean similares.
Documentos: 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.

MongoDB utiliza el formato JSON para representar los datos en un "documento":

{
  codigo: 1,
  nombre: 'El aleph',
  autor: 'Borges',
  editoriales: ['Planeta','Siglo XXI']
}

# data[].attributes.headline
¿Cuál es la diferencia entre JSON y BSON?

# data[].attributes.subject
¿Cuál es la diferencia entre JSON y BSON?

# data[].attributes.body
BSON es un formato de datos desarrollado por 10gen, que actualmente se utiliza principalmente en MongoDB, es el formato de almacenamiento de datos de mongodb. BSON se basa en el formato JSON, y la razón principal para elegir JSON para la transformación es la versatilidad de JSON y la función sin esquema de JSON.
BSON logrará principalmente los siguientes tres objetivos:

Velocidad transversal más rápida

La operación es más fácil

Tipos de datos adicionales agregados

Hay varios problemas que hacen que JSON no sea ideal para usar dentro de una base de datos:

1. JSON solo admite una cantidad limitada de tipos de datos básicos. En particular, JSON carece de soporte para fechas y datos binarios.

2. Los objetos y las propiedades JSON no tienen una longitud fija, lo que hace que el recorrido sea más lento.

# 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
OPERADORES DE COMPARACIÓN
Los operadores de comparación se usan en filtros que, en vez de pasar únicamente un valor, pasan un nuevo documento que contiene las comparaciones a realizar.

$eq: igual que (equal)

$ne: distinto de (not equal)

$gt: valores mayores que (greater than)

$gte: valores mayores o iguales que (greater than or equal)

$lt: valores menores que (lower than)

$lte: valores menores o iguales que (lower than or equal)

$in: sus valores se encuentran dentro del array especificado. Por ejemplo: { "pais": { $in: ["España", "Francia"] }} mostrará todos los documentos cuyo campo pais sea España o Francia

$nin: operación contraria a $in, obtiene los documentos cuyo valor NO esté en el array.

OPERADORES DE ELEMENTO

Los operadores de elemento se utilizan para comprobar si cierto campo existe o no, y su tipo:

$exists: comprueba que el campo existe. Por ejemplo: { "nacionalidad" : {$exists: true} } muestra los documentos que contienen un campo llamado nacionalidad. Fijarse en que no es lo mismo que filtrar por un campo con valor a null, puesto que en ese caso devolvería tanto los documentos que contienen el campo seteado a null, como aquellos que no contienen ese campo

$type: comprueba el tipo del campo. Por ejemplo: { "longitud": { $type: "int" }} obtendrá los documentos cuyo campo longitud tenga un valor entero de 32 bit.

OPERADORES LÓGICOS

Los operadores lógicos permiten realizar filtrados atendiendo a varias condiciones:

$or: filtra los documentos que cumplan alguna de las condiciones del array. Por ejemplo: { $or: [ { "edad": {$gte: 60}}, { "edad": {$lte:10}} ]} filtra los documentos cuyo campo edad tenga valor mayor o igual que 60 O valor menor o igual que 10

$and: similar a $or, pero en este caso los documentos deben cumplir todas las condiciones del array. Su uso puede resultar superfluo teniendo en cuenta que en un filtro normal, las condiciones indicadas se juntan mediante operadores lógicos Y. Normalmente se usa en situaciones en las que se deben aplicar varias condiciones sobre un mismo campo. En una consulta normal, los campos deben ser únicos.

# data[].attributes.headline
¿Cuáles son los tipos de validaciones que podemos encontrar enMongoDB?

# data[].attributes.subject
¿Cuáles son los tipos de validaciones que podemos encontrar enMongoDB?

# data[].attributes.body
Schema Validation:
La validación de esquemas le permite crear reglas de validación para sus campos, como tipos de datos permitidos y rangos de valores.

MongoDB utiliza un modelo de esquema flexible, lo que significa que los documentos de una colección no necesitan tener los mismos campos o tipos de datos de forma predeterminada. Una vez que haya establecido un esquema de aplicación, puede usar la validación del esquema para asegurarse de que no haya cambios de esquema no deseados o tipos de datos incorrectos.

Algunas de estas validaciones son:

El parámetro validationLevel, cuando es configurado con el parámetro strict aplica el validador tanto para las inserciones como para las actualizaciones sobre los documentos existentes.

validationAction, cuyo valor por defecto es error e imposibilita la inserción del documento.

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

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

# data[].attributes.body
EMBEBER
Cuando hablamos de embeber , se refiere a que un documento puede contener a otros, Los datos embebidos ofrecen mejor rendimiento al permitir obtener los datos mediante una única operación, así como modificar datos relacionados en una sola operación atómica de escritura.
Generalmente, emplearemos datos embebidos cuando tengamos:

relaciones "contiene" entre entidades, entre relaciones de documentos "uno a uno" o "uno a pocos".

relaciones "uno a muchos" entre entidades. En estas relaciones los documentos hijo (o "muchos") siempre aparecen dentro del contexto del padre o del documento "uno".

REFERENCIAR
Son referencias de un documento a otro mediante el valor del campo _id, el nombre de la colección y, opcionalmente, el nombre de la base de datos. Estos objetos siguen una convención para representar un documento mediante la notación { "$ref" : <nombreColeccion>, "$id" : <valorCampo_id>, "$db" : <nombreBaseDatos> }.

Al incluir estos nombres, las DBRef permite referenciar documentos localizados en diferentes colecciones.