curso
Las 25 mejores preguntas y respuestas de entrevistas sobre MongoDB para 2025
Hasta la fecha, he concedido muchas entrevistas sobre ciencia de datos y bases de datos. Las empresas buscan cada vez más profesionales expertos en bases de datos NoSQL d. MongoDB esuna de las bases de datos más flexibles, capaz de soportar aplicaciones modernas escalables con un tiempo de inactividad mínimo.
En este artículo, he recopilado una lista de preguntas de entrevistas que me he encontrado, junto con ideas que he recogido de las experiencias de mis colegas en las entrevistas.
¿Qué es MongoDB?
MongoDB es una base de datos No-SQL que almacenaores de datos en una arquitectura flexible y sin esquemas. A diferencia de las tablas tradicionales, utilizalos documentos y las colecciones para guardar los registros en un formato similar a JSON llamado BSON. Este formato permite a MongoDB almacenar diversos tipos de datos en un modelo jerárquico.
Como 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 el flujo de datos. Además, las aplicaciones modernas a menudo experimentan un rápido crecimiento o un tráfico impredecible, que MongoDB está especialmente equipado para manejar. 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 de la entrevista sobre MongoDB
En esta sección, nos centraremos en las preguntas fundamentales que suelen hacerse en las entrevistas sobre MongoDB.
Explica el formato de almacenamiento BSON.
BSON significa notación binaria de objetos Javascript. Almacena documentos JSON serializados en un formato con codificación binaria y amplía las capacidades de JSON al admitir tipos de datos adicionales como Fecha, ObjectId y expresiones regulares.
Un documento BSON suele contener tres componentes: el tamaño del documento, elementos de campo (como tipo de datos, nombre y valor) y un terminador nulo, todo ello codificado en formato binario.
La siguiente tabla ilustra las diferencias entre BSON y JSON, sobre todo porque BSON amplía las capacidades de JSON:
Función |
JSON |
BSON |
Formato de codificación |
Text-based |
Binario |
Tipos de datos admitidos |
String, Number, Boolean, etc. |
Tipos JSON + Fecha, ObjectId, Expresiones regulares |
Legibilidad |
Lectura humana |
Machine-readable |
Caso práctico |
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 de 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 de una colección pueden ser de distintos tipos de datos.
¿Cómo consultar un documento en MongoDB?
En MongoDB, puedes consultar documentos utilizando el método find()
. Para consultar todos los documentos de una colección, utiliza db.collection_name.find()
. El método de búsqueda tiene dos parámetros de entrada: query
y projection
. El parámetro query
se utiliza para filtrar los documentos que cumplen una condición específica.
Sintaxis del parámetro de consulta:
db.collection_name.find({condition})
El segundo es un parámetro de proyección que indica las columnas a incluir o excluir en la salida. Asigna 1 a las columnas que quieras recuperar. Ésta 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 la consulta. Esto funciona iterando sobre todos los resultados y obteniendo los documentos coincidentes. En cambio, 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. Este campo _id
actúa como clave primaria para identificar de forma única los documentos de una colección.
Preguntas intermedias de la entrevista sobre MongoDB
Ahora, pasemos a algunos conceptos básicos de MongoDB que el entrevistador puede esperar que conozcas.
¿Cómo almacena MongoDB imágenes y vídeos de gran tamaño?
Tradicionalmente, MongoDB no permite almacenar documentos de más de 16 MB. Sin embargo, tiene una especificación especial llamada GridFS para almacenar y recuperar archivos de más de 16 MB. Divide el archivo en trozos más pequeños e iguales y los almacena internamente como documentos separados.
La tabla siguiente resume cómo almacena MongoDB los archivos grandes utilizando GridFS:
Paso |
Descripción |
Agrupación de archivos |
Divide los archivos en trozos más pequeños de 255 KB o menos |
Metadata Storage |
Almacena metadatos sobre el archivo en una colección |
Almacenamiento de trozos |
Almacena los trozos de archivo en una colección |
Retrieval |
Reconstruye el archivo a partir de trozos almacenados |
¿Cómo garantiza MongoDB la alta disponibilidad?
MongoDB consigue una alta disponibilidad mediante la replicación. Los conjuntos de réplicas almacenan diferentes copias de datos en los nodos, de modo que si un nodo falla, otro pueda tomar el relevo.
¿Qué es la fragmentación en MongoDB?
El sharding permite el escalado horizontal en MongoDB. Cuando una sola instancia no puede gestionar un gran conjunto de datos, MongoDB divide los datos en trozos más pequeños y los distribuye entre varios servidores, conocidos como shards.
La siguiente tabla aclara las diferencias entre replicación y fragmentación:
Función |
Replicación |
Fragmentación |
Propósito |
Alta disponibilidad |
Escalabilidad para grandes conjuntos de datos |
Aplicación |
Juegos de réplicas (varias copias) |
Datos divididos en fragmentos |
Caso práctico |
Tolerancia a fallos |
Equilibrio de carga para grandes bases de datos |
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 despliegan en aplicaciones que requieren alta disponibilidad, porque si una instancia falla, el sistema cambia automáticamente al siguiente nodo disponible del 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. Se trata de un proceso de agregación, en el que los documentos pasan por varias etapas: el resultado de cada etapa se convierte en la entrada de la siguiente. Un pipeline típico puede incluir etapas como emparejar, agrupar y ordenar:
- Coincidencia: filtra los documentos en función de los criterios dados.
- Grupo: Realiza la operación de agregación.
- Ordena: Ordena los resultados finales como necesitemos.
¿Qué es una colección capada en MongoDB?
Una colección con límite tiene un tamaño fijo y un límite para el número de documentos. Cuando se alcanza el límite, sobrescribe automáticamente el documento más antiguo y 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 de la entrevista sobre MongoDB
En esta sección, echamos un vistazo a algunas preguntas y respuestas populares de entrevistas avanzadas sobre MongoDB.
¿Soporta MongoDB transacciones ACID?
Hasta la versión 4.0, MongoDB sólo admitía transacciones ACID para documentos individuales. Con sus transacciones ACID multidocumento, ahora los desarrolladores pueden garantizar las propiedades ACID en varios documentos 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 emite resultados agregados. MongoDB ofrece una función integrada mapReduce()
que consta de dos etapas: map y reduce.
Durante la fase de mapa, 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 las operaciones.
Por ejemplo, si tienes una colección de documentos de texto, la función mapa convertiría cada palabra en una clave y le asignaría el valor 1. A continuación, la función reducir 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 sistemáticamente y eliminarse cuando no sean necesarios; de lo contrario, te quedarás sin recursos para dar cabida a 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 práctico |
Campo único |
Índice de un solo campo |
Indexar el correo electrónico para una búsqueda más rápida |
Compuesto |
Índice en varios campos |
Clasificación por |
Text |
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 del registro tras un tiempo determinado |
Geospatial |
Admite consultas basadas en la ubicación |
Encontrar restaurantes cercanos |
¿Dispone MongoDB de copia de seguridad y recuperación?
MongoDB permite realizar copias de seguridad de los datos a través de la utilidad mongodump
. Esta herramienta crea copias de seguridad binarias de tus datos, que puedes importar siempre que lo necesites. Otra opción es utilizar soluciones de terceros en la nube or MongoDB Atlas(servicio en la nube) para automatizar el proceso de copia de seguridad .
MongoDB proporciona la utilidad mongorestore
para importar datos de archivos BSON con copia de seguridad. Además, las soluciones de terceros en la nube ofrecen capacidades de restauración automatizadas, minimizando el tiempo de inactividad.
¿Cómo puedes optimizar las consultas a MongoDB?
Aquí tienes algunas soluciones que puedes aplicar para optimizar tus consultas a MongoDB:
- Los índices almacenan información sobre los documentos, lo que ayuda a localizar rápidamente los datos correctos. Por tanto, crear índices puede mejorar el rendimiento de las consultas.
- Si sabes qué columnas necesitas, utiliza métodos de proyección que devuelvan sólo esos campos para mejorar el rendimiento.
- Evita operaciones caras como las expresiones regulares; utiliza en su lugar búsquedas por prefijos o campos indexados.
- Elige la clave de fragmento adecuada, especialmente cuando trabajes con cargas de trabajo de lectura intensiva.
Explica el registro en diario en MongoDB.
Cuando se realiza una operación de escritura, MongoDB la registra en los archivos del diario antes de grabarla en los archivos de la base de datos. Estos registros garantizan que las operaciones de escritura comprometidas puedan recuperarse rápidamente en caso de fallos o caídas del sistema.
Preguntas de la entrevista sobre codificación de MongoDB
Las preguntas de la entrevista sobre codificación suelen centrarse en tu capacidad para aplicar los conceptos de MongoDB a través del código. Ponen a prueba tu sintaxis, tus prácticas de codificación y la eficacia con la que puedes utilizar las herramientas y funciones de MongoDB.
¿Cómo crear un índice en MongoDB?
MongoDB tiene una función createIndex()
para crear varios tipos de índices, como índices de campo único, índices de texto e índices 2D. El método tiene dos parámetros de entrada: claves que definen las columnas 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: emparejar, agrupar y ordenar. Veamos cómo podemos aplicarlas en 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 en función de una condición$group
: Agrupa los datos y aplica la operación de agregación$sort
: Ordena los documentos de salida como necesites
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:
Digamos que tienes colecciones de pedidos y productos con los siguientes datos:
Colección "Pedidos":
[
{ "_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},
]
Operación de unión:
db.orders.aggregate([
{
$lookup: {
from: "products",
localField: "customer_id",
foreignField: "_id",
as: "customer_info"
}
}
])
¿Cómo se modela una relación de uno a muchos en MongoDB?
Puedes crear un modelo de datos que utilice documentos incrustados para describir una relación de uno a muchos. Por ejemplo, un mismo equipo puede tener varios empleados, por lo que puedes incrustarlos 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 de 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 para entrevistas a DBA sobre escenarios de MongoDB
Los entrevistadores te pondrán en situaciones difíciles y evaluarán cómo las abordarías. Esto les ayuda a comprender tu capacidad para manejar problemas en tiempo real mientras trabajas con MongoDB.
Imagina que realizas una operación de búsqueda en la base de datos "pedidos" del siguiente modo ¿Cómo se depura por qué 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 perfil 1 para seleccionar sólo las consultas de ejecución lenta:
db.setProfilingLevel(1, { slowms: 100 }); // Logs queries slower than 100ms
Ahora, el código siguiente nos da detalles adicionales como el tipo de operación, el tiempo empleado y las llaves o documentos escaneados. Esta información te ayuda a encontrar las consultas que funcionan con lentitud:
db.system.profile.find({ millis: { $gt: 100 } }).sort({ millis: -1 }).limit(10);
En el caso anterior, ¿cómo puedes mejorar el rendimiento de las consultas lentas?
A partir de la salida 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 la consulta.
db.orders.createIndex({ customer_id: 1, "ordered_items.product_id": 1});
En la fragmentación, 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 del shard y la distribución desigual de los datos entre los shards.
Fix 1: Elige la clave de fragmento adecuada
- Elige columnas de alta cardinalidad como claves de fragmentos. Es decir, una clave de fragmento debe tener muchos valores únicos.
- Si tu carga de trabajo es de mucha escritura, asegúrate de que tu clave de fragmento no dirige todas las escrituras a un único fragmento.
- Elige una clave de fragmento que se alinee con tus consultas más frecuentes. Por ejemplo, si tus consultas se unen a menudo en un campo concreto, ese campo podría ser una clave de fragmentación eficaz.
Fix 2: Reequilibrar la distribución desigual
Este comando proporciona una visión general de los datos distribuidos en los shards. Si los trozos no están bien distribuidos, activa el equilibrador.
sh.status()
El comando siguiente obtiene el estado del equilibrador. Si está desactivado, utiliza el comando posterior para activarlo.
sh.getBalancerState()
sh.enableBalancing("db_name.collection_name")
¿A qué retos podrías enfrentarte al migrar de RDBMS a MongoDB?
Mapear las operaciones de las bases de datos relacionales a sus homólogas en NoSQL puede ser un reto.
- Por ejemplo, las uniones SQL no son sencillas en MongoDB; en su lugar, necesitas utilizar el marco de agregación para conseguir una funcionalidad similar.
- Otro reto es que los datos almacenados en tablas estructuradas necesitarán una transformación para ajustarse al formato de almacenamiento BSON de MongoDB.
- Además, mientras que los RDBMS ofrecen una sólida conformidad ACID, MongoDB sólo ofrece propiedades ACID a nivel de documento, lo que significa que las transacciones ACID complejas pueden requerir una atención extra.
Consejos para preparar una entrevista sobre MongoDB
Para superar una entrevista sobre MongoDB se requiere una profunda comprensión de los conceptos y experiencia prácticaen la materia. Es esencial que amplíes tus conocimientos sobre bases de datos NoSQL, domines la sintaxis de MongoDB y estés expuesto a múltiples escenarios de fallo de MongoDB y aprendas a resolverlos.
Aquí tienes mis mejores consejos para ayudarte a superar la próxima entrevista de MongoDB:
- Sé bueno en los fundamentos: Tanto si te presentas a un puesto inicial como a uno superior, siempre se ponen a prueba los fundamentos. Por tanto, comprende la arquitectura de MongoDB, el tipo de almacenamiento, la sintaxis y las operaciones admitidas.
- Temas avanzados: Debes saber cómo funcionan en MongoDB conceptos avanzados como la replicación, la agregación, la fragmentación y la indexación, y ser capaz de implementarlos si es necesario.
- Escenarios del mundo real: Los entrevistadores suelen poner a prueba cómo gestionas las bases de datos MongoDB en diversos escenarios laborales. Por ejemplo, te pueden preguntar cómo pasar una base de datos RDBMS existente a MongoDB. En entrevistas más avanzadas, puede que te den un escenario y te pidan que escribas código para resolverlo.
- Lee experiencias anteriores: Conocer experiencias anteriores de entrevistas en la empresa te dará una idea del tipo de preguntas que puedes esperar y de sus pautas de entrevista, lo que te permitirá prepararte en consecuencia. Personalmente, utilizo plataformas como Glassdoor, Blind, YouTube y LinkedIn para conocer experiencias de entrevistas anteriores.
- Simulacros de entrevistas: Los simulacros de entrevista 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 blandas: La capacidad de comunicar temas complejos es esencial para impresionar al entrevistador. Por tanto, trabaja en 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 una certificación MongoDB.
Conclusión
MongoDB es una potente base de datos NoSQL con un esquema flexible que admite aplicaciones modernas. Por ello, su experiencia es muy solicitada en el desarrollo de software.
En este artículo, hemos explorado las preguntas esenciales para una entrevista, que van desde las básicas hasta las de codificación y las basadas en escenarios. Además, los consejos del final aumentarán tus posibilidades de éxito en las entrevistas.
Para profundizar tus conocimientos sobre MongoDB, considera la posibilidad de explorar 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.
¡Aprende más sobre NoSQL con estos cursos!
curso
Introducción a NoSQL
curso
Introducción a MongoDB en Python
blog
Las 80 mejores preguntas y respuestas de entrevistas SQL para principiantes y profesionales intermedios
blog
Las 23 mejores preguntas y respuestas de entrevistas sobre Python
blog
30 preguntas de entrevista sobre Azure: De Básico a Avanzado
Josep Ferrer
30 min
blog
Las 21 mejores preguntas y respuestas de la entrevista sobre ingeniería de datos
blog
Las 30 mejores preguntas de entrevista sobre Excel para todos los niveles
blog