Importer des données MongoDB

MongoDBBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les compétences essentielles pour importer des données dans une base de données MongoDB. Vous travaillerez avec deux formats de données courants : JSON et CSV. Vous utiliserez l'outil en ligne de commande mongoimport pour charger des données à partir de fichiers dans des collections MongoDB. Le laboratoire vous guidera à travers l'importation de données, la spécification des types de données lors de l'importation et la vérification que les données ont été chargées correctement à l'aide de requêtes et de l'outil mongoexport.

Importer des données à partir d'un fichier JSON

Dans cette première étape, vous importerez des données d'un fichier JSON dans une collection MongoDB. JSON (JavaScript Object Notation) est un format natif pour MongoDB, ce qui rend le processus d'importation simple. Nous utiliserons l'utilitaire mongoimport, un outil en ligne de commande conçu à cet effet.

Un fichier exemple nommé books.json a été créé pour vous dans le répertoire ~/project. Tout d'abord, inspectez son contenu depuis votre terminal.

cat ~/project/books.json

Vous devriez voir la sortie suivante, qui est un tableau de documents JSON :

[
  {
    "_id": 1,
    "title": "MongoDB Basics",
    "author": "Jane Smith",
    "year": 2023,
    "tags": ["mongodb", "database", "nosql"]
  },
  {
    "_id": 2,
    "title": "Python Programming",
    "author": "John Doe",
    "year": 2022,
    "tags": ["python", "programming"]
  },
  {
    "_id": 3,
    "title": "Data Science Handbook",
    "author": "Alice Johnson",
    "year": 2021,
    "tags": ["data science", "python", "machine learning"]
  }
]

Maintenant, importez ces données dans une nouvelle base de données nommée library_db et une collection nommée books.

mongoimport --db library_db --collection books --file ~/project/books.json --jsonArray

Décomposons les options de la commande :

  • --db library_db : Spécifie la base de données cible.
  • --collection books : Spécifie la collection cible dans la base de données.
  • --file ~/project/books.json : Fournit le chemin d'accès au fichier d'entrée.
  • --jsonArray : Indique à mongoimport que le fichier contient un seul tableau JSON, où chaque élément est un document à insérer.

Vous verrez une sortie indiquant la progression et l'achèvement de l'importation :

2025-08-27T15:10:40.411+0800    connected to: mongodb://localhost/
2025-08-27T15:10:40.417+0800    3 document(s) imported successfully. 0 document(s) failed to import.

Pour vérifier que les données ont été importées correctement, vous allez maintenant vous connecter à MongoDB en utilisant le MongoDB Shell, mongosh.

mongosh

Une fois dans le shell, basculez vers la base de données library_db :

use library_db

Maintenant, comptez les documents dans la collection books pour confirmer que les trois enregistrements ont été importés.

db.books.countDocuments()

La sortie devrait être 3. Vous pouvez également afficher l'un des documents importés pour vérifier sa structure.

db.books.findOne()

Cela affichera le premier document de la collection. Enfin, quittez le MongoDB Shell pour revenir à votre terminal.

exit

Importer des données à partir d'un fichier CSV

Ensuite, vous importerez des données à partir d'un fichier CSV (Comma-Separated Values). Le CSV est un format courant pour les données tabulaires, et mongoimport peut facilement le convertir en documents MongoDB.

Un fichier CSV exemple nommé library_members.csv a été préparé pour vous. Examinez son contenu.

cat ~/project/library_members.csv

Le fichier contient une ligne d'en-tête et trois lignes de données :

name,age,membership_status
John Doe,35,active
Jane Smith,28,active
Mike Johnson,42,expired

Maintenant, utilisez mongoimport pour charger ces données dans une nouvelle collection nommée members dans la même base de données library_db.

mongoimport --db library_db --collection members --type csv --file ~/project/library_members.csv --headerline

Voici les nouvelles options utilisées pour l'importation CSV :

  • --type csv : Spécifie que le format du fichier d'entrée est CSV.
  • --headerline : Indique à mongoimport d'utiliser la première ligne du fichier comme noms de champs pour les documents.

La sortie confirmera l'importation réussie :

2025-08-27T15:11:33.553+0800    connected to: mongodb://localhost/
2025-08-27T15:11:33.558+0800    3 document(s) imported successfully. 0 document(s) failed to import.

Vérifions l'importation. Connectez-vous au MongoDB Shell et examinez la collection members. Vous pouvez spécifier la base de données directement lors du lancement de mongosh pour gagner une étape.

mongosh library_db

Maintenant, comptez les documents dans la collection members.

db.members.countDocuments()

Le résultat devrait être 3. Ensuite, inspectez l'un des documents pour voir comment mongoimport a converti la ligne CSV en un document BSON.

db.members.findOne()

Vous verrez un document similaire à celui-ci. Notez que toutes les valeurs, y compris l'age, sont importées sous forme de chaînes de caractères par défaut.

{
  _id: ObjectId("..."),
  name: 'John Doe',
  age: '35',
  membership_status: 'active'
}

Vous apprendrez comment gérer les types de données dans la prochaine étape. Pour l'instant, quittez le shell.

exit

Gestion des types de données lors de l'importation CSV

Lors de l'importation à partir d'un fichier CSV, mongoimport traite toutes les valeurs comme des chaînes de caractères par défaut. Cela peut poser problème si vous avez besoin d'effectuer des opérations numériques ou basées sur des dates. Dans cette étape, vous apprendrez comment importer des données CSV, puis convertir les types de données dans MongoDB.

Réimportons les données de library_members.csv dans une nouvelle collection nommée typed_members, puis convertissons le champ age en entier.

Tout d'abord, créez un fichier CSV sans en-têtes, car nous définirons les noms de champs explicitement :

tail -n +2 ~/project/library_members.csv > ~/project/library_members_no_header.csv

Importez maintenant les données avec des noms de champs explicites :

mongoimport --db library_db --collection typed_members --type csv --file ~/project/library_members_no_header.csv --fields "name,age,membership_status"

Après l'importation, nous devons convertir le champ age de chaîne de caractères en entier en utilisant l'opération de mise à jour de MongoDB :

mongosh library_db --eval "db.typed_members.updateMany({}, [{ \$set: { age: { \$toInt: \"\$age\" } } }])"

Cette commande utilise le pipeline d'agrégation de MongoDB dans une opération de mise à jour pour convertir toutes les valeurs age de chaînes de caractères en entiers à l'aide de l'opérateur $toInt.

Vérifions maintenant le résultat en nous connectant à mongosh et en inspectant les types de données dans la collection typed_members.

mongosh library_db

Tout d'abord, trouvez un document dans la collection pour voir les données converties :

db.typed_members.findOne()

La sortie devrait montrer le champ age comme un nombre :

{
  _id: ObjectId("..."),
  name: 'Jane Smith',
  age: 28,
  membership_status: 'active'
}

Vous pouvez vérifier explicitement le type du champ age en utilisant l'opérateur typeof de JavaScript dans mongosh :

typeof db.typed_members.findOne().age

La sortie devrait être number, confirmant que la conversion du type de données a réussi. Cela vous permet d'effectuer des requêtes numériques, comme trouver tous les membres de plus de 30 ans :

db.typed_members.find({ age: { $gt: 30 } })

Cette requête fonctionnera maintenant comme prévu et retournera deux documents. Quittez le shell pour passer à l'étape suivante :

exit

Vérification des données par requêtes et exportations

La dernière étape de tout processus d'importation de données est une vérification approfondie. Cela implique non seulement de vérifier le nombre de documents, mais aussi d'exécuter des requêtes pour échantillonner les données et assurer leur intégrité. Vous pouvez également exporter les données vers un fichier externe pour une analyse plus poussée.

Connectez-vous d'abord à votre base de données avec mongosh.

mongosh library_db

Vous pouvez lister toutes les collections de la base de données pour voir les résultats de votre travail jusqu'à présent.

show collections

Vous devriez voir books, members et typed_members. Maintenant, exécutons quelques requêtes pour valider les données. Pour la collection books, trouvez tous les livres qui ont le tag "python".

db.books.find({ tags: "python" })

Cette requête démontre la recherche dans un champ de type tableau (array). Vous devriez voir deux livres retournés. Pour la collection typed_members, trouvez tous les membres ayant un statut d'adhésion "active".

db.typed_members.find({ membership_status: "active" })

Cela devrait retourner deux membres. Ces requêtes simples aident à confirmer que les données sont structurées comme prévu.

Un autre outil de vérification puissant est mongoexport, qui fait l'inverse de mongoimport. Il exporte une collection vers un fichier. Exportons la collection books vers un nouveau fichier JSON. Quittez d'abord le shell.

exit

Maintenant, exécutez la commande mongoexport depuis votre terminal.

mongoexport --db library_db --collection books --out ~/project/exported_books.json

L'indicateur --out spécifie le chemin du fichier de sortie. Cette commande créera un fichier nommé exported_books.json dans votre répertoire de projet. Vous pouvez afficher son contenu pour vérifier l'exportation.

cat ~/project/exported_books.json

Chaque ligne du fichier de sortie est un document JSON autonome de votre collection. Ce fichier peut être utilisé pour des sauvegardes, des migrations ou des analyses avec d'autres outils.

Résumé

Dans ce laboratoire, vous avez appris à importer des données dans MongoDB à partir de fichiers JSON et CSV à l'aide de l'utilitaire mongoimport. Vous avez pratiqué l'importation d'un tableau JSON dans une collection et vérifié le résultat à l'aide de mongosh. Vous avez ensuite importé des données à partir d'un fichier CSV, d'abord avec des types de données de chaîne par défaut, puis en spécifiant les types de données pour des champs tels que les nombres. Enfin, vous avez appris à vérifier l'intégrité de vos données importées en exécutant des requêtes dans mongosh et en exportant une collection vers un fichier à l'aide de mongoexport. Ce sont des compétences fondamentales pour la gestion des données dans tout projet MongoDB.