cours
Les 25 meilleures questions et réponses d'entretien sur MongoDB pour 2025
À ce jour, j'ai donné de nombreux entretiens sur la science des données et les bases de données. Les entreprises recherchent de plus en plus des professionnels ayant une expertise dans les bases de données NoSQL d. MongoDB estl'une des bases de données les plus flexibles, capable de prendre en charge des applications modernes évolutives avec un minimum de temps d'arrêt.
Dans cet article, j'ai compilé une liste de questions d'entretien que j'ai rencontrées, ainsi que des informations que j'ai recueillies auprès de mes collègues.
Qu'est-ce que MongoDB ?
MongoDB est une base de données No-SQL qui stores des données dans une architecture flexible et sans schéma. Contrairement aux tableaux traditionnels, il utilise lesdocuments et les collections pour enregistrer les enregistrements dans un format similaire à JSON appelé BSON. Ce format permet à MongoDB de stocker une variété de types de données dans un modèle hiérarchique.
MongoDB n'ayant pas de schéma fixe, il permet tout type de stockage, ce qui en fait un bon choix pour l'analyse en temps réel et la diffusion de données en continu. De plus, les applications modernes connaissent souvent une croissance rapide ou un trafic imprévisible, ce que MongoDB est particulièrement bien équipé pour gérer. Par exemple, MongoDB prend en charge la mise à l'échelle horizontale, ce qui vous permet d'ajouter des serveurs supplémentaires pour faire face à l'augmentation de la charge.
Obtenez une certification pour le poste d'analyste de données de vos rêves
Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.
Questions d'entretien de base sur MongoDB
Dans cette section, nous nous concentrerons sur les questions fondamentales souvent posées lors des entretiens avec MongoDB.
Expliquez le format de stockage BSON.
BSON est l'abréviation de binary Javascript object notation. Il stocke les documents JSON sérialisés dans un format codé binaire et étend les capacités JSON en prenant en charge des types de données supplémentaires tels que Date, ObjectId, et les expressions régulières.
Un document BSON contient généralement trois éléments : la taille du document, des éléments de champ (tels que le type de données, le nom et la valeur) et un terminateur nul, tous encodés au format binaire.
Le tableau suivant illustre les différences entre BSON et JSON, d'autant plus que BSON étend les capacités de JSON :
Fonctionnalité |
JSON |
BSON |
Format d'encodage |
Texte |
Binaire |
Types de données pris en charge |
Chaîne, nombre, booléen, etc. |
Types JSON + Date, ObjectId, Expressions régulières |
Lisibilité |
Lisible par l'homme |
Lisible à la machine |
Cas d'utilisation |
Échange de données |
Stockage des données dans MongoDB |
Qu'est-ce qu'une collection dans MongoDB ?
Une collection MongoDB est un groupe de documents stockés dans une seule base de données. Il est similaire à un tableau dans une base de données relationnelle, où chaque document d'une collection représente une ligne dans un tableau. Cependant, la collection n'a pas de schéma fixe, ce qui signifie que les documents d'une collection peuvent avoir des types de données différents.
Comment interroger un document dans MongoDB ?
Dans MongoDB, vous pouvez interroger des documents à l'aide de la méthode find()
. Pour interroger tous les documents d'une collection, utilisez db.collection_name.find()
. La méthode de recherche a deux paramètres d'entrée : query
et projection
. Le paramètre query
est utilisé pour filtrer les documents qui répondent à une condition spécifique.
Syntaxe du paramètre de requête :
db.collection_name.find({condition})
Le second est un paramètre de projection qui indique les colonnes à inclure ou à exclure dans la sortie. Attribuez la valeur 1 aux colonnes que vous souhaitez récupérer. Voici la syntaxe :
db.collection_name.find({},{column1: 1, column2: 1})
Quelle est la différence entre find() et findOne() ?
La méthode find()
renvoie un curseur vers plusieurs documents correspondant aux critères de la requête. Il s'agit d'itérer sur tous les résultats et de récupérer les documents correspondants. En revanche, la méthode findOne()
renvoie le premier document correspondant.
Qu'est-ce que le champ _id dans MongoDB ?
Chaque document stocké dans une collection nécessite un identifiant unique. Ce champ _id
sert de clé primaire pour identifier de manière unique les documents d'une collection.
Questions d'entretien intermédiaires sur MongoDB
Passons maintenant à certains concepts fondamentaux de MongoDB que votre interlocuteur pourrait s'attendre à vous voir connaître.
Comment MongoDB stocke-t-il les images et les vidéos de grande taille ?
Traditionnellement, MongoDB ne permet pas de stocker des documents de plus de 16 Mo. Cependant, il dispose d'une spécification spéciale appelée GridFS pour le stockage et la récupération des fichiers de plus de 16 Mo. Il divise le fichier en morceaux plus petits et égaux et les stocke en interne en tant que documents distincts.
Le tableau ci-dessous résume la manière dont MongoDB stocke les fichiers volumineux à l'aide de GridFS :
Étape |
Description |
Regroupement de fichiers |
Divise les fichiers en petits morceaux de 255 Ko ou moins. |
Stockage des métadonnées |
Stocke les métadonnées du fichier dans une collection |
Stockage de morceaux |
Stocke les morceaux de fichiers dans une collection |
Récupération |
Reconstruit le fichier à partir des morceaux stockés |
Comment MongoDB assure-t-il la haute disponibilité ?
MongoDB assure une haute disponibilité grâce à la réplication. Les ensembles de répliques stockent différentes copies des données entre les nœuds, de sorte qu'en cas de défaillance d'un nœud, un autre peut prendre le relais.
Qu'est-ce que le sharding dans MongoDB ?
Le sharding permet une mise à l'échelle horizontale dans MongoDB. Lorsqu'une instance unique ne peut pas gérer un ensemble de données volumineux, MongoDB divise les données en morceaux plus petits et les répartit sur plusieurs serveurs, appelés "shards".
Le tableau suivant clarifie les différences entre la réplication et le sharding :
Fonctionnalité |
Réplication |
La mise en commun |
Objectif |
Haute disponibilité |
Évolutivité pour les grands ensembles de données |
Mise en œuvre |
Jeux de répliques (copies multiples) |
Les données sont réparties entre les différentes zones (shards) |
Cas d'utilisation |
Tolérance aux fautes |
Équilibrage de la charge pour les grandes bases de données |
Distribution des données |
Tous les nœuds stockent les mêmes données |
Les données sont réparties entre les nœuds |
Qu'est-ce qu'un ensemble de répliques dans MongoDB ?
Un ensemble de répliques dans MongoDB est un groupe d'instances qui gèrent le même ensemble de données. Ils sont déployés dans des applications qui requièrent une haute disponibilité, car si une instance tombe en panne, le système passe automatiquement au nœud disponible suivant dans l'ensemble de répliques.
Expliquez le concept d'agrégation dans MongoDB.
MongoDB agrège des données provenant de plusieurs documents et les traite pour obtenir un résultat unique. Il s'agit d'un pipeline d'agrégation, dans lequel les documents passent par plusieurs étapes - la sortie de chaque étape devient l'entrée de la suivante. Un pipeline type peut comprendre des étapes telles que la mise en correspondance, le regroupement et le tri :
- Correspondance : filtre les documents en fonction des critères donnés.
- Le groupe : Effectue l'opération d'agrégation.
- Trier : Trie les résultats finaux comme nous le souhaitons.
Qu'est-ce qu'une collection plafonnée dans MongoDB ?
Une collection plafonnée a une taille fixe et un nombre limité de documents. Lorsque la limite est atteinte, il écrase automatiquement le document le plus ancien et stocke les informations les plus récentes. Ce concept le rend adapté à des cas d'utilisation tels que la journalisation et la mise en cache.
Questions d'entretien avancées sur MongoDB
Dans cette section, nous examinons quelques questions et réponses d'entretiens avancés sur MongoDB.
MongoDB prend-il en charge les transactions ACID ?
Jusqu'à la version 4.0, MongoDB ne prenait en charge les transactions ACID que pour les documents uniques. Grâce aux transactions ACID multi-documents, les développeurs peuvent désormais garantir des propriétés ACID pour plusieurs documents d'une collection.
Qu'est-ce que le map-reduce dans Mongodb ?
Map-reduce est un paradigme de traitement de données qui effectue des opérations sur de grands ensembles de données et produit des résultats agrégés. MongoDB propose une fonction mapReduce()
intégrée qui se compose de deux étapes : map et reduce.
Pendant la phase de mappage, la fonction traite chaque document de la collection et génère des paires clé-valeur. Ces paires clé-valeur sont agrégées dans la phase de réduction et des opérations sont effectuées.
Par exemple, si vous disposez d'une collection de documents textuels, la fonction map convertira chaque mot en clé et lui attribuera la valeur 1. La fonction de réduction additionne ensuite les valeurs de chaque clé pour compter les occurrences de chaque mot dans l'ensemble de la collection.
Expliquez les index TTL dans MongoDB.
Les données générées doivent être régulièrement examinées et supprimées lorsqu'elles ne sont pas nécessaires ; dans le cas contraire, vous manquerez de ressources pour intégrer les informations les plus récentes.
MongoDB propose des index TTL (Time-to-Live) qui rationalisent la suppression des documents expirés. Il vous suffit de spécifier la durée de conservation d'un document, et TTL le supprimera automatiquement une fois la période spécifiée écoulée.
Le tableau suivant explique les types d'index disponibles dans MongoDB et leurs cas d'utilisation :
Type d'indice |
Description |
Exemple de cas d'utilisation |
Champ unique |
Index sur un seul champ |
Indexation du courrier électronique pour une recherche plus rapide |
Composé |
Index sur plusieurs champs |
Tri par |
Texte |
Recherche en texte intégral sur des champs de type chaîne de caractères |
Recherche d'un article de blog par mots-clés |
TTL |
Supprime automatiquement les documents périmés |
Nettoyage du journal après une durée déterminée |
Géospatial |
Prise en charge des requêtes basées sur la localisation |
Trouver des restaurants à proximité |
MongoDB dispose-t-il d'une fonction de sauvegarde et de récupération ?
MongoDB permet de sauvegarder les données via l'utilitaire mongodump
. Cet outil crée des sauvegardes binaires de vos données, que vous pouvez importer à tout moment. Une autre option consiste à utiliser des solutions cloud tierces oou MongoDB Atlas(service cloud) pour automatiser le processus de sauvegarde.
MongoDB fournit l'utilitaire mongorestore
pour importer des données à partir de fichiers BSON sauvegardés. En outre, les solutions cloud tierces offrent des capacités de restauration automatisées, ce qui minimise les temps d'arrêt.
Comment optimiser les requêtes MongoDB ?
Voici quelques solutions qui peuvent être appliquées pour optimiser vos requêtes MongoDB :
- Les index stockent des informations sur les documents, ce qui permet de localiser rapidement les bonnes données. La création d'index peut donc améliorer les performances des requêtes.
- Si vous savez de quelles colonnes vous avez besoin, utilisez les méthodes de projection pour ne renvoyer que ces champs afin d'améliorer les performances.
- Évitez les opérations coûteuses telles que les expressions régulières ; utilisez plutôt des recherches par préfixe ou des champs indexés.
- Choisissez la bonne clé de stockage, en particulier lorsque vous travaillez sur des charges de travail lourdes en lecture.
Expliquez la journalisation dans MongoDB.
Lorsqu'une opération d'écriture est effectuée, MongoDB l'enregistre dans les fichiers journaux avant qu'ils ne soient gravés dans les fichiers de la base de données. Ces journaux garantissent que les opérations d'écriture engagées peuvent être rapidement récupérées en cas de défaillance ou de panne du système.
Questions d'entretien sur le codage de MongoDB
Les questions d'entretien portant sur le codage se concentrent souvent sur votre capacité à mettre en œuvre les concepts de MongoDB par le biais du code. Ils testent votre syntaxe, vos pratiques de codage et l'efficacité avec laquelle vous pouvez utiliser les outils et les fonctions de MongoDB.
Comment créer un index dans MongoDB ?
MongoDB dispose d'une fonction createIndex()
pour créer différents types d'index, tels que les index à champ unique, les index texte et les index 2D. La méthode a deux paramètres d'entrée : des clés définissant les colonnes à indexer et d'autres options.
Syntaxe :
db.collection.createIndex(keys, options)
- Clés :
{ field1: 1, field2: -1, ... }
1 pour l'ordre croissant et -1 pour l'ordre décroissant - Options :
{unique: true}
,{sparse: true}
,{ expireAfterSeconds: 3600 }
Exemple :
db.users.createIndex({ email: 1 }, { unique: true });
Comment mettre en œuvre l'agrégation dans MongoDB ?
L'agrégation comporte généralement trois étapes : la correspondance, le regroupement et le tri. Voyons comment nous pouvons les mettre en œuvre dans le code.
Exemple de document "produits" :
[
{ "_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
: Pour filtrer les documents en fonction d'une condition$group
: Cette opération permet de regrouper les données et d'appliquer l'opération d'agrégation$sort
: Ordonnez les documents de sortie selon vos besoins
Exemple :
db.products.aggregate([
{ $match: { status: "completed" } },
{ $group: { _id: "$product_id", totalAmount: { $sum: "$amount" },
{ $sort
]);
Comment effectuer des jointures SQL équivalentes dans MongoDB ?
MongoDB propose des opérateurs d'agrégation tels que $lookup
pour effectuer des jointures équivalentes à SQL.
Syntaxe :
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
}
}
])
Exemple :
Supposons que vous ayez des collections de commandes et de produits avec les données suivantes :
Collection "Ordres" :
[
{ "_id": 1, "product_id": 101, "order_amount": 250 },
{ "_id": 2, "product_id": 102, "order_amount": 300 },
{ "_id": 3, "product_id": 101, "order_amount": 150 }
]
Collection "Produits" :
[
{ "_id": 3789, "product_id": 102, "product_price": $100},
{ "_id": 3970, "product_id": 103, "product_price": $297},
{ "_id": 3509, "product_id": 101, "product_price": $300},
]
Opération de jonction :
db.orders.aggregate([
{
$lookup: {
from: "products",
localField: "customer_id",
foreignField: "_id",
as: "customer_info"
}
}
])
Comment modéliser une relation de type "un à plusieurs" dans MongoDB ?
Vous pouvez créer un modèle de données qui utilise des documents incorporés pour décrire une relation de type un à plusieurs. Par exemple, une même équipe peut avoir plusieurs employés, vous pouvez donc les intégrer comme suit :
Données :
// 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
}
Document intégré de type "un à plusieurs" :
{
"_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"
}
]
}
Questions d'entretien basées sur des scénarios pour les administrateurs de bases de données (DBA) de MongoDB
Les intervieweurs vous placeront dans des situations difficiles et évalueront la façon dont vous les aborderiez. Cela les aide à comprendre votre capacité à gérer des problèmes en temps réel lorsque vous travaillez avec MongoDB.
Imaginez que vous effectuiez une opération de recherche sur la base de données "commandes" comme suit. Comment expliquez-vous la lenteur de la requête ?
df.orders.find({
customer_id: 'yop89'
ordered_items: {
product_id: 'toi45'
product_id: 'tac87'
}
});
Tout d'abord, vous devez définir le niveau de profilage 1 pour ne sélectionner que les requêtes lentes :
db.setProfilingLevel(1, { slowms: 100 }); // Logs queries slower than 100ms
Maintenant, le code suivant nous donne des détails supplémentaires tels que le type d'opération, le temps nécessaire et les clés ou documents scannés. Ces informations vous aident à trouver les requêtes les plus lentes :
db.system.profile.find({ millis: { $gt: 100 } }).sort({ millis: -1 }).limit(10);
Dans le scénario ci-dessus, comment améliorez-vous les performances des requêtes qui tournent lentement ?
D'après la sortie du code ci-dessus, si la requête balaie l'ensemble de la collection, créez des index sur customer_id
et ordered_items
. Les index peuvent réduire le nombre de documents scannés, améliorant ainsi le temps d'exécution des requêtes.
db.orders.createIndex({ customer_id: 1, "ordered_items.product_id": 1});
Dans le cas du sharding, si un shard est surchargé et que les autres restent inactifs. Comment trouver un équilibre ?
Deux problèmes potentiels peuvent se poser : la sélection inappropriée de la clé du groupe de stockage et la distribution inégale des données entre les groupes de stockage.
Fixe 1 : Choisissez la bonne clé de tesson
- Choisissez des colonnes à forte cardinalité comme clés de division. En d'autres termes, une clé de tesson doit avoir plusieurs valeurs uniques.
- Si votre charge de travail est importante en termes d'écriture, assurez-vous que votre clé de répartition ne dirige pas toutes les écritures vers un seul groupe.
- Choisissez une clé de tesson qui correspond à vos requêtes les plus fréquentes. Par exemple, si vos requêtes portent souvent sur un champ spécifique, ce champ peut constituer une clé de tri efficace.
Fixe 2 : Rééquilibrer la répartition inégale
La commande ci-dessous fournit une vue d'ensemble des données distribuées dans les différents ensembles de données (shards). Si les blocs ne sont pas bien répartis, activez l'équilibreur.
sh.status()
La commande ci-dessous permet d'obtenir l'état de l'équilibreur. S'il est désactivé, utilisez la commande suivante pour l'activer.
sh.getBalancerState()
sh.enableBalancing("db_name.collection_name")
Quels sont les défis auxquels vous pourriez être confronté lors de la migration d'un SGBDR vers MongoDB ?
La mise en correspondance des opérations des bases de données relationnelles avec leurs équivalents dans les bases NoSQL peut s'avérer difficile.
- Par exemple, les jointures SQL ne sont pas directes dans MongoDB ; vous devez utiliser le cadre d'agrégation pour obtenir une fonctionnalité similaire.
- Autre difficulté, les données stockées dans des tableaux structurés devront être transformées pour s'adapter au format de stockage BSON de MongoDB.
- En outre, alors que les SGBDR offrent une conformité ACID solide, MongoDB n'offre que des propriétés ACID au niveau des documents, ce qui signifie que les transactions ACID complexes peuvent nécessiter une attention particulière.
Conseils pour se préparer à un entretien avec MongoDB
Pour réussir un entretien avec MongoDB, il faut une compréhension approfondie des concepts et une expertise pratiquedu sujet. Il est essentiel de renforcer vos connaissances sur les bases de données NoSQL, de maîtriser la syntaxe de MongoDB et d'être exposé à de multiples scénarios d'échec de MongoDB et d'apprendre à les résoudre.
Voici mes meilleurs conseils pour vous aider à réussir le prochain entretien MongoDB :
- Soyez bon dans les fondamentaux : Que vous postuliez à un poste de débutant ou à un poste de cadre, les fondamentaux sont toujours testés. Comprenez donc l'architecture de MongoDB, le type de stockage, la syntaxe et les opérations prises en charge.
- Sujets avancés : Vous devez savoir comment les concepts avancés tels que la réplication, l'agrégation, le sharding et l'indexation fonctionnent dans MongoDB et être capable de les mettre en œuvre si nécessaire.
- Scénarios du monde réel : Les intervieweurs testent souvent la façon dont vous gérez les bases de données MongoDB dans divers scénarios professionnels. Par exemple, on peut vous demander comment faire passer une base de données RDBMS existante à MongoDB. Dans les entretiens plus avancés, on peut vous donner un scénario et vous demander d'écrire du code pour le résoudre.
- Lisez les expériences passées : En vous renseignant sur les entretiens passés dans l'entreprise, vous aurez une idée du type de questions auxquelles vous pouvez vous attendre et des habitudes de l'entreprise en matière d'entretien, ce qui vous permettra de vous préparer en conséquence. Personnellement, j'utilise des plateformes telles que Glassdoor, Blind, YouTube et LinkedIn pour les entretiens précédents.
- simuler des entretiens : Les simulations d'entretien vous permettent d'évaluer vos forces et vos faiblesses. Ils vous préparent également à l'environnement de l'entretien, ce qui vous permet de vous sentir confiant et à l'aise lors de l'entretien proprement dit.
- Compétences non techniques : La capacité à communiquer sur des sujets complexes est essentielle pour impressionner l'interlocuteur. Travaillez donc vos compétences en matière de communication et de présentation.
- Certifications : Les certifications MongoDB sont la preuve de votre expertise. Ils vous permettent d'approfondir votre compréhension du sujet et augmentent vos chances d'être embauché. Voici un guide complet pour obtenir une certification MongoDB.
Conclusion
MongoDB est une puissante base de données NoSQL dotée d'un schéma flexible qui prend en charge les applications modernes. Son expertise est donc très recherchée dans le domaine du développement de logiciels.
Dans cet article, nous avons exploré les questions d'entretien essentielles, allant des questions de base aux questions de codage en passant par les questions basées sur des scénarios. De plus, les conseils donnés à la fin de l'article augmenteront vos chances de succès lors des entretiens.
Pour approfondir votre compréhension de MongoDB, envisagez d'explorer des courstels que MongoDB en Python et NoSQL concepts.
Devenez certifié SQL
Srujana est rédactrice technique indépendante et titulaire d'un diplôme de quatre ans en informatique. Écrire sur divers sujets, notamment la science des données, l'informatique en nuage, le développement, la programmation, la sécurité et bien d'autres encore, est pour elle une évidence. Elle aime la littérature classique et la découverte de nouvelles destinations.
Apprenez-en plus sur NoSQL avec ces cours !
cours
Introduction à NoSQL
cours