Curso
Hasta la fecha, he realizado muchas entrevistas sobre ciencia de datos y bases de datos. Las empresas buscan cada vez más profesionales con experiencia en bases de datos nosql d. MongoDB esuna de las bases de datos más flexibles, capaz de admitir aplicaciones modernas escalables con un tiempo de inactividad mínimo.
En este artículo, he recopilado una lista de preguntas de entrevista que he encontrado, junto con las opiniones que he recopilado de las experiencias de entrevista de mis colegas.
¿Qué es MongoDB?
MongoDB es una base de datos No-SQL que almacena datos en una arquitectura flexible y sin esquema. A diferencia de las tablas tradicionales, utilizadocumentos y colecciones para guardar registros en un formato similar a JSON llamado BSON. Este formato permite a MongoDB almacenar una gran variedad de tipos de datos en un modelo jerárquico.
Dado que MongoDB no tiene un esquema fijo, permite cualquier tipo de almacenamiento, lo que lo convierte en una buena opción para el análisis en tiempo real y la transmisión de datos. Además, las aplicaciones modernas suelen experimentar un rápido crecimiento o un tráfico impredecible, algo para lo que MongoDB está especialmente preparado. Por ejemplo, MongoDB admite el escalado horizontal, lo que te permite añadir servidores adicionales para gestionar el aumento de la carga.
Certifícate en el puesto de Analista de Datos de tus sueños
Nuestros programas de certificación te ayudan a destacar y a demostrar que tus aptitudes están preparadas para el trabajo a posibles empleadores.

Preguntas básicas para una entrevista sobre MongoDB
En esta sección, nos centraremos en preguntas fundamentales que suelen plantearse en las entrevistas sobre MongoDB.
Explica el formato de almacenamiento BSON.
BSON son las siglas de «binary Javascript object notation» (notación binaria de objetos Javascript). Almacena documentos JSON serializados en un formato codificado en binario y amplía las capacidades de JSON al admitir tipos de datos adicionales como Date, ObjectId y expresiones regulares.
Un documento BSON suele contener tres componentes: el tamaño del documento, los elementos de campo (como el tipo de datos, el nombre y el valor) y un terminador nulo, todos ellos codificados en formato binario.
La siguiente tabla ilustra las diferencias entre BSON y JSON, especialmente porque BSON amplía las capacidades de JSON:
|
Característica |
JSON |
BSON |
|
Formato de codificación |
Text-based |
Binario |
|
Tipos de datos compatibles |
Cadena, número, booleano, etc. |
Tipos JSON + Fecha, ObjectId, expresiones regulares |
|
Legibilidad |
Legible por humanos |
Legible por máquina |
|
Caso de uso |
Intercambio de datos |
Almacenamiento de datos en MongoDB |
¿Qué es una colección en MongoDB?
Una colección MongoDB es un grupo de documentos almacenados en una única base de datos. Es similar a una tabla en una base de datos relacional, donde cada documento de una colección representa una fila de una tabla. Sin embargo, la colección no tiene un esquema fijo, lo que significa que los documentos dentro de una colección pueden ser de diferentes tipos de datos.
¿Cómo consultar un documento en MongoDB?
En MongoDB, puedes consultar documentos utilizando el método « find() » (Buscar por nombre). Para consultar todos los documentos de una colección, utiliza db.collection_name.find(). El método find tiene dos parámetros de entrada: query y projection. El parámetro query se utiliza para filtrar documentos que coinciden con una condición específica.
Sintaxis para el parámetro de consulta:
db.collection_name.find({condition})
El segundo es un parámetro de proyección que indica las columnas que se deben incluir o excluir en la salida. Asigna 1 a las columnas que deseas recuperar. Esta es la sintaxis:
db.collection_name.find({},{column1: 1, column2: 1})
¿Cuál es la diferencia entre find() y findOne()?
El método ` find() ` devuelve un cursor a varios documentos que coinciden con los criterios de consulta. Esto funciona iterando sobre todos los resultados y recuperando los documentos coincidentes. Por otro lado, el método ` findOne() ` devuelve el primer documento coincidente.
¿Qué es el campo _id en MongoDB?
Cada documento almacenado en una colección requiere un identificador único. El campo « _id » (Identificador de documento) actúa como clave principal para identificar de forma única los documentos de una colección.
Preguntas de entrevista sobre MongoDB para nivel intermedio
Ahora, pasemos a algunos conceptos básicos de MongoDB que el entrevistador podría esperar que conocieras.
¿Cómo almacena MongoDB imágenes y vídeos de gran tamaño?
Tradicionalmente, MongoDB no permite el almacenamiento de documentos de más de 16 MB. Sin embargo, cuenta con una especificación especial llamada GridFS para almacenar y recuperar archivos de más de 16 MB. Divide el archivo en fragmentos más pequeños e iguales y los almacena internamente como documentos separados.
La siguiente tabla resume cómo MongoDB almacena archivos grandes utilizando GridFS:
|
Paso |
Descripción |
|
División de archivos en fragmentos |
Divide los archivos en fragmentos más pequeños de 255 KB o menos. |
|
Almacenamiento de metadatos |
Almacena metadatos sobre el archivo en una colección de |
|
Almacenamiento por fragmentos |
Almacena fragmentos de archivos en una colección de tipo « |
|
Recuperación |
Reconstruye el archivo a partir de fragmentos almacenados. |
¿Cómo garantiza MongoDB una alta disponibilidad?
MongoDB logra una alta disponibilidad mediante la replicación. Los conjuntos de réplicas almacenan diferentes copias de los datos en distintos nodos, de modo que si uno de ellos falla, otro puede tomar el relevo.
¿Qué es el sharding en MongoDB?
El fragmentado permite el escalado horizontal en MongoDB. Cuando una sola instancia no puede gestionar un conjunto de datos grande, MongoDB divide los datos en fragmentos más pequeños y los distribuye entre varios servidores, lo que se conoce como fragmentos.
La siguiente tabla aclara las diferencias entre replicación y fragmentación:
|
Característica |
Replicación |
Fragmentación |
|
Objetivo |
Alta disponibilidad |
Escalabilidad para grandes conjuntos de datos |
|
Implementación |
Conjuntos de réplicas (múltiples copias) |
Datos particionados en fragmentos |
|
Caso de uso |
Tolerancia a fallos |
Equilibrio de carga para bases de datos de gran tamaño |
|
Distribución de datos |
Todos los nodos almacenan los mismos datos. |
Los datos se distribuyen entre los nodos. |
¿Qué es un conjunto de réplicas en MongoDB?
Un conjunto de réplicas en MongoDB es un grupo de instancias que mantienen el mismo conjunto de datos. Se implementan en aplicaciones que requieren alta disponibilidad porque, si una instancia falla, el sistema cambia automáticamente al siguiente nodo disponible en el conjunto de réplicas.
Explica el concepto de agregación en MongoDB.
MongoDB agrega datos de varios documentos y los procesa para devolver un único resultado. Esto implica un proceso de agregación, en el que los documentos pasan por varias etapas, y el resultado de cada etapa se convierte en la entrada para la siguiente. Un proceso típico puede incluir etapas como coincidencia, agrupación y clasificación:
- Coincidencia: filtra los documentos según los criterios establecidos.
- Grupo: Realiza operaciones de agregación.
- Ordenar: Ordena los resultados finales de la forma que necesitamos.
¿Qué es una colección limitada en MongoDB?
Una colección limitada tiene un tamaño fijo y un límite en cuanto al número de documentos. Cuando se alcanza el límite, se sobrescribe automáticamente el documento más antiguo y se almacena la información más reciente. Este concepto lo hace adecuado para casos de uso como el registro y el almacenamiento en caché.
Preguntas avanzadas para entrevistas sobre MongoDB
En esta sección, echamos un vistazo a algunas preguntas y respuestas populares de entrevistas avanzadas sobre MongoDB.
¿MongoDB admite transacciones ACID?
Hasta la versión 4.0, MongoDB solo admitía transacciones ACID para documentos individuales. Gracias a sus transacciones ACID multidocumento, ahora los programadores pueden garantizar las propiedades ACID en varios documentos dentro de una colección.
¿Qué es map-reduce en Mongodb?
Map-reduce es un paradigma de procesamiento de datos que realiza operaciones en grandes conjuntos de datos y genera resultados agregados. MongoDB ofrece una función integrada denominada « mapReduce() » (mapear y reducir) que consta de dos etapas: mapear y reducir.
Durante la fase de mapeo, la función procesa cada documento de la colección y genera pares clave-valor. Estos pares clave-valor se agregan en la fase de reducción y se realizan operaciones.
Por ejemplo, si tienes una colección de documentos de texto, la función map convertiría cada palabra en una clave y le asignaría un valor de 1. La función reduce suma los valores de cada clave para contar las apariciones de cada palabra en toda la colección.
Explica los índices TTL en MongoDB.
Los datos generados deben revisarse constantemente y eliminarse cuando no sean necesarios; de lo contrario, te quedarás sin recursos para almacenar la información más reciente.
MongoDB proporciona índices Time-to-Live (TTL), que agilizan la eliminación de documentos caducados. Todo lo que tienes que hacer es especificar cuánto tiempo debe conservarse un documento, y TTL lo eliminará automáticamente una vez transcurrido el periodo de tiempo especificado.
La siguiente tabla explica los tipos de índices disponibles en MongoDB y sus casos de uso:
|
Tipo de índice |
Descripción |
Ejemplo de caso de uso |
|
Campo único |
Índice en un solo campo |
Indexación de correos electrónicos para una búsqueda más rápida |
|
Compuesto |
Índice en varios campos |
Ordenar por |
|
Texto |
Búsqueda de texto completo en campos de cadena |
Buscar una entrada de blog por palabras clave |
|
TTL |
Elimina automáticamente los documentos caducados. |
Limpieza de registros después de un tiempo específico |
|
Geoespacial |
Admite consultas basadas en la ubicación. |
Encontrar restaurantes cercanos |
¿MongoDB ofrece funciones de copia de seguridad y recuperación?
MongoDB permite realizar copias de seguridad de los datos mediante la utilidad mongodump. Esta herramienta crea copias de seguridad binarias de tus datos, que puedes importar cuando lo necesites. Otra opción es utilizar soluciones en la nube de terceros, comoo MongoDB Atlas(servicio en la nube), para automatizar el proceso de copia de seguridad.
MongoDB proporciona la utilidad mongorestore para importar datos desde archivos BSON de copia de seguridad. Además, las soluciones en la nube de terceros ofrecen capacidades de restauración automatizadas, lo que minimiza el tiempo de inactividad.
¿Cómo puedes optimizar las consultas de MongoDB?
A continuación, se indican algunas soluciones que pueden aplicarse para optimizar tus consultas en MongoDB:
- Los índices almacenan información sobre los documentos, lo que ayuda a localizar rápidamente los datos correctos. Por lo tanto, crear índices puede mejorar el rendimiento de las consultas.
- Si sabes qué columnas necesitas, utiliza métodos de proyección para devolver solo esos campos y obtener un mejor rendimiento.
- Evita operaciones costosas como las expresiones regulares; en su lugar, utiliza búsquedas por prefijo o campos indexados.
- Elige la clave de fragmentación adecuada, especialmente cuando trabajes con cargas de trabajo con un uso intensivo de lectura.
Explica el registro en MongoDB.
Cuando se realiza una operación de escritura, MongoDB la registra en los archivos de diario antes de que se graben en los archivos de la base de datos. Estos registros garantizan que las operaciones de escritura confirmadas se puedan recuperar rápidamente en caso de fallos o bloqueos del sistema.
Preguntas de entrevista sobre programación en MongoDB
Las preguntas de las entrevistas de programación suelen centrarse en tu capacidad para implementar conceptos de MongoDB a través del código. Ponen a prueba tu sintaxis, tus prácticas de codificación y tu eficiencia en el uso de las herramientas y funciones de MongoDB.
¿Cómo crear un índice en MongoDB?
MongoDB cuenta con una función ` createIndex() ` para crear varios tipos de índices, como índices de un solo campo, índices de texto e índices 2D. El método tiene dos parámetros de entrada: claves que definen las columnas que se van a indexar y otras opciones.
Syntax:
db.collection.createIndex(keys, options)
- Claves:
{ field1: 1, field2: -1, ... }, 1 para orden ascendente y -1 para orden descendente. - Opciones:
{unique: true},{sparse: true},{ expireAfterSeconds: 3600 }
Ejemplo:
db.users.createIndex({ email: 1 }, { unique: true });
¿Cómo implementar la agregación en MongoDB?
La agregación suele constar de tres etapas: coincidencia, agrupación y clasificación. Veamos cómo podemos implementar esto en el código.
Ejemplo de documento «productos»:
[
{ "_id": 1, "product_id": "t2409", "amount": $250, "status": "done" },
{ "_id": 2, "product_id": "t2009", "amount": $300, "status": "done" },
{ "_id": 3, "product_id": "t1309", "amount": $150, "status": "pending" },
{ "_id": 4, "product_id": "t1919", "amount": $480, "status": "done" },
{ "_id": 5, "product_id": "t5459", "amount": $120, "status": "pending" },
{ "_id": 6, "product_id": "t3829", "amount": $280, "status": "done" }
]
$match: Para filtrar documentos según una condición$group: Esto agrupa los datos y aplica la operación de agregación.$sort: Ordena los documentos de salida según tus necesidades.
Ejemplo:
db.products.aggregate([
{ $match: { status: "completed" } },
{ $group: { _id: "$product_id", totalAmount: { $sum: "$amount" },
{ $sort
]);
¿Cómo se realiza una unión SQL equivalente en MongoDB?
MongoDB proporciona operadores de agregación como $lookup para realizar uniones equivalentes a SQL.
Syntax:
db.collection_1_name.aggregate([
{
$lookup: {
from: "collection_2_name", // The other collection to join with
localField: "field_in_collection_1", // The field on which you want to join
foreignField: "field_in_collection_2", // The field from the second collection you want to perform join operation
as: "result_field" // The name of the new field to store the joined result
}
}
])
Ejemplo:
Supongamos que tienes colecciones de pedidos y productos con los siguientes datos:
Colección «Órdenes»:
[
{ "_id": 1, "product_id": 101, "order_amount": 250 },
{ "_id": 2, "product_id": 102, "order_amount": 300 },
{ "_id": 3, "product_id": 101, "order_amount": 150 }
]
Colección «Productos»:
[
{ "_id": 3789, "product_id": 102, "product_price": $100},
{ "_id": 3970, "product_id": 103, "product_price": $297},
{ "_id": 3509, "product_id": 101, "product_price": $300},
]
Únete a la operación:
db.orders.aggregate([
{
$lookup: {
from: "products",
localField: "customer_id",
foreignField: "_id",
as: "customer_info"
}
}
])
¿Cómo se modela una relación uno a muchos en MongoDB?
Puedes crear un modelo de datos que utilice documentos incrustados para describir una relación uno a muchos. Por ejemplo, un solo equipo puede tener varios empleados, por lo que puedes integrarlos de la siguiente manera:
Datos:
// team details
{
_id: "Datascience"
company_name: "DataCamp"
team_name: "Data leaders"
}
// employee one
{
name: "John"
employee_id: "t009456"
email: johnsmith@datacamp.com
}
// employee two
{
name: "Emily"
employee_id: "t8068ms"
email: emilyjones@datacamp.com
}
Documento incrustado uno a muchos:
{
"_id": "Datascience",
"company_name": "DataCamp",
"team_name": "Data leaders",
"employees": [
{
"name": "John",
"employee_id": "t009456",
"email": "johnsmith@datacamp.com"
},
{
"name": "Emily",
"employee_id": "t8068ms",
"email": "emilyjones@datacamp.com"
}
]
}
Preguntas de entrevista basadas en escenarios de MongoDB para administradores de bases de datos
Los entrevistadores te pondrán en situaciones difíciles y evaluarán cómo las afrontarías. Esto les ayuda a comprender tu capacidad para gestionar problemas en tiempo real mientras trabajas con MongoDB.
Imagina que estás realizando una operación de búsqueda en la base de datos «pedidos» de la siguiente manera. ¿Cómo se depura el motivo por el que la consulta es lenta?
df.orders.find({
customer_id: 'yop89'
ordered_items: {
product_id: 'toi45'
product_id: 'tac87'
}
});
En primer lugar, debes establecer el nivel de perfilado 1 para seleccionar solo las consultas de ejecución lenta:
db.setProfilingLevel(1, { slowms: 100 }); // Logs queries slower than 100ms
Ahora, el siguiente código nos proporciona detalles adicionales, como el tipo de operación, el tiempo empleado y las claves o documentos escaneados. Esta información te ayuda a encontrar las consultas que se ejecutan lentamente:
db.system.profile.find({ millis: { $gt: 100 } }).sort({ millis: -1 }).limit(10);
En el escenario anterior, ¿cómo se mejora el rendimiento de las consultas que se ejecutan lentamente?
A partir del resultado del código anterior, si la consulta escanea toda la colección, crea índices en customer_id y ordered_items. Los índices pueden reducir el número de documentos escaneados, mejorando el tiempo de ejecución de las consultas.
db.orders.createIndex({ customer_id: 1, "ordered_items.product_id": 1});
En el sharding, si un fragmento está sobrecargado y los demás permanecen inactivos. ¿Cómo se equilibra esto?
Dos posibles problemas podrían ser la selección inadecuada de la clave de fragmentación y la distribución desigual de los datos entre los fragmentos.
Solución 1: Elige la clave de fragmentación adecuada
- Elige columnas de alta cardinalidad como claves de fragmentación. Es decir, una clave de fragmentación debe tener muchos valores únicos.
- Si tu carga de trabajo implica muchas escrituras, asegúrate de que tu clave de fragmentación no dirija todas las escrituras a un único fragmento.
- Elige una clave de fragmentación que se ajuste a tus consultas más frecuentes. Por ejemplo, si tus consultas suelen unirse en un campo específico, ese campo podría ser una clave de fragmentación eficaz.
Solución 2: Reequilibrar la distribución desigual
El siguiente comando proporciona una descripción general de los datos distribuidos entre los fragmentos. Si los fragmentos no están bien distribuidos, activa el equilibrador.
sh.status()
El siguiente comando obtiene el estado del equilibrador. Si está desactivado, utiliza el comando posterior para activarlo.
sh.getBalancerState()
sh.enableBalancing("db_name.collection_name")
¿Qué retos podrías encontrar al migrar de RDBMS a MongoDB?
Asignar las operaciones de las bases de datos relacionales a sus equivalentes en nosql puede resultar complicado.
- Por ejemplo, las uniones SQL no son sencillas en MongoDB; en su lugar, es necesario utilizar el marco de agregación para lograr una funcionalidad similar.
- Otro reto es que los datos almacenados en tablas necesitarán una transformación para adaptarse al formato de almacenamiento BSON de MongoDB.
- Además, mientras que los RDBMS proporcionan un sólido cumplimiento de ACID, MongoDB solo ofrece propiedades ACID a nivel de documento, lo que significa que las transacciones ACID complejas pueden requerir una atención especial.
Consejos para prepararse para una entrevista sobre MongoDB
Para superar una entrevista de MongoDB es necesario tener un profundo conocimiento de los conceptos y experiencia prácticaen la materia. Es fundamental ampliar tus conocimientos sobre bases de datos nosql, dominar la sintaxis de MongoDB, familiarizarte con múltiples escenarios de fallo de MongoDB y aprender a resolverlos.
Estos son mis mejores consejos para ayudarte a superar la próxima entrevista de MongoDB:
- Sé bueno en lo fundamental: Tanto si solicitas un puesto de nivel inicial como uno sénior, siempre se evalúan tus conocimientos básicos. Por lo tanto, es importante comprender la arquitectura, el tipo de almacenamiento, la sintaxis y las operaciones compatibles con MongoDB.
- Temas avanzados: Debes conocer cómo funcionan conceptos avanzados como la replicación, la agregación, el fragmentado y la indexación en MongoDB, y ser capaz de implementarlos si es necesario.
- Situaciones reales: Los entrevistadores suelen evaluar cómo gestionas las bases de datos MongoDB en diversos escenarios laborales. Por ejemplo, es posible que te pregunten cómo realizar la transición de una base de datos RDBMS existente a MongoDB. En entrevistas más avanzadas, es posible que te den un escenario y te pidan que escribas código para resolverlo.
- Lee experiencias anteriores: Conocer las experiencias de entrevistas anteriores en la empresa te da una idea del tipo de preguntas que puedes esperar y de sus patrones de entrevista, lo que te permite prepararte adecuadamente. Personalmente, utilizo plataformas como Glassdoor, Blind, YouTube y LinkedIn para consultar experiencias previas en entrevistas.
- Entrevistas simuladas: Las entrevistas simuladas te ayudan a evaluar tus puntos fuertes y débiles. También te preparan para el entorno de la entrevista, lo que te ayuda a sentirte seguro y cómodo durante la entrevista real.
- Habilidades sociales: La capacidad de comunicar temas complejos es esencial para impresionar al entrevistador. Por lo tanto, trabaja tus habilidades de comunicación y presentación.
- Certificaciones: Las certificaciones de MongoDB sirven como prueba de tu experiencia. Profundizan tu comprensión del tema y aumentan tus posibilidades de ser contratado. Aquí tienes una guía completa para obtener la certificación MongoDB.
Conclusión
MongoDB es una potente base de datos nosql con un esquema flexible que admite aplicaciones modernas. Por ello, tu experiencia es muy solicitada en el ámbito del desarrollo de software.
En este artículo, hemos analizado preguntas esenciales para entrevistas, desde preguntas básicas hasta preguntas sobre programación y basadas en situaciones hipotéticas. Además, los consejos que encontrarás al final aumentarán tus posibilidades de éxito en las entrevistas.
Para profundizar en tu conocimiento sobre MongoDB, te recomendamos que explores cursoscomo MongoDB en Python y conceptos nosql.
Certifícate en SQL
Srujana es una redactora técnica autónoma con una licenciatura de cuatro años en Informática. Escribir sobre diversos temas, como la ciencia de datos, la computación en la nube, el desarrollo, la programación, la seguridad y muchos otros, le resulta natural. Le encanta la literatura clásica y explorar nuevos destinos.


