MongoDB est une base de données NoSQL qui stocke les données sous forme de documents JSON. Elle est très populaire pour les applications modernes, car elle permet de stocker des données de manière flexible et de les interroger facilement.
Installation locale de MongoDB
- Installez MongoDB Community Server sur votre machine
Vous pouvez vous référer à la documentation officielle pour plus d’informations sur l’installation de MongoDB Community sur votre système d’exploitation.
- Installez MongoDB Shell pour interagir avec MongoDB en ligne de commande
- Installez MongoDB Compass pour interagir avec MongoDB en interface graphique
- Lancez MongoDB Community Server et MongoDB Compass pour commencer à utiliser MongoDB.
Créer une base de données
- Lancez MongoDB Compass
- Cliquez sur “New Connection”
- Normalement, MongoDB Compass devrait vous proposer une connexion locale à
mongodb://localhost:27017
- Cliquez sur “Connect” pour vous connecter à votre base de données locale
- Cliquez sur “Create Database” pour créer une nouvelle base de données
- Entrez le nom de la base de données (
Balles
par exemple), créez une collectionscores
et cliquez sur “Create Database” - Créez une seconde collection
joueurs
de la même manière
- Importez le contenu des fichiers JSON
scores.json
etjoueurs.json
précédemment créés dans les collections MongoDBscores
etjoueurs
pour les remplir avec des données.
Installation de MongoDB dans l’application
Pour utiliser MongoDB dans votre application Node.js, vous devez installer le module mongodb
:
1npm install mongodb
Interaction entre MongoDB et Node.js
Pour se connecter à MongoDB, vous pouvez utiliser la méthode connect
du module mongodb
:
1import { MongoClient, ServerApiVersion } from 'mongodb';2
3const uri = "mongodb://localhost:27017";4
5// Create a MongoClient with a MongoClientOptions object to set the Stable API version6const client = new MongoClient(uri, {7 serverApi: {8 version: ServerApiVersion.v1,9 strict: true,10 deprecationErrors: true,11 }12});13
14async function run() {15 try {16 // Connect the client to the server (optional starting in v4.7)17 await client.connect();18 // Send a ping to confirm a successful connection19 await client.db("admin").command({ ping: 1 });20 console.log("Pinged your deployment. You successfully connected to MongoDB!");21 } finally {22 // Ensures that the client will close when you finish/error23 await client.close();24 }25}26run().catch(console.dir);
Testez la connexion à MongoDB en exécutant le script mongo-test.mjs
:
1node mongo-test.mjs2> Pinged your deployment. You successfully connected to MongoDB!
La documentation officielle de MongoDB pour Node.js est disponible à l’adresse suivante : https://www.mongodb.com/docs/drivers/node/current/quick-reference/
Interroger la base de données - findOne()
Voici un exemple pour interroger la base de données MongoDB depuis Node.js pour récupérer un document dans la collection movies
:
1import { MongoClient } from "mongodb";2
3// Replace the uri string with your MongoDB deployment's connection string.4const uri = "<connection string uri>";5
6const client = new MongoClient(uri);7
8async function run() {9 try {10 // Get the database and collection on which to run the operation11 const database = client.db("sample_mflix");12 const movies = database.collection("movies");13
14 // Query for a movie that has the title 'The Room'15 const query = { title: "The Room" };16
17 const options = {18 // Sort matched documents in descending order by rating19 sort: { "imdb.rating": -1 },20 // Include only the `title` and `imdb` fields in the returned document21 projection: { _id: 0, title: 1, imdb: 1 },22 };23
24 // Execute query25 const movie = await movies.findOne(query, options);26
27 // Print the document returned by findOne()28 console.log(movie);29 } finally {30 await client.close();31 }32}33run().catch(console.dir);
La documentation officielle de MongoDB pour Node.js est disponible à l’adresse suivante : https://www.mongodb.com/docs/drivers/node/current/quick-reference/
Interroger la base de données - find()
Voici un exemple pour interroger la base de données MongoDB depuis Node.js pour récupérer de multiples document dans la collection movies
:
1import { MongoClient } from "mongodb";2
3// Replace the uri string with your MongoDB deployment's connection string.4const uri = "<connection string uri>";5
6const client = new MongoClient(uri);7
8async function run() {9 try {10
11 // Get the database and collection on which to run the operation12 const database = client.db("sample_mflix");13 const movies = database.collection("movies");14
15 // Query for movies that have a runtime less than 15 minutes16 const query = { runtime: { $lt: 15 } };17
18 const options = {19 // Sort returned documents in ascending order by title (A->Z)20 sort: { title: 1 },21 // Include only the `title` and `imdb` fields in each returned document22 projection: { _id: 0, title: 1, imdb: 1 },23 };24
25 // Execute query26 const cursor = movies.find(query, options);27
28 // Print a message if no documents were found29 if ((await movies.countDocuments(query)) === 0) {30 console.log("No documents found!");31 }32
33 // Print returned documents34 for await (const doc of cursor) {35 console.dir(doc);36 }37
38 } finally {39 await client.close();40 }41}42run().catch(console.dir);
Insérer des documents depuis Node.js
Voici un exemple de code pour insérer des documents dans la colleciton scores
depuis Node.js :
1import { MongoClient } from "mongodb";2
3// Replace the uri string with your MongoDB deployment's connection string.4const uri = "<connection string uri>";5
6// Create a new client and connect to MongoDB7const client = new MongoClient(uri);8
9async function run() {10 try {11 // Connect to the "insertDB" database and access its "haiku" collection12 const database = client.db("Balles");13 const scores = database.collection("scores");14
15 // Create a document to insert16 const doc = {17 joueur: "Flo",18 score: 3,19 };20 // Insert the defined document into the "haiku" collection21 const result = await scores.insertOne(doc);22
23 // Print the ID of the inserted document24 console.log(`A document was inserted with the _id: ${result.insertedId}`);25 } finally {26 // Close the MongoDB client connection27 await client.close();28 }29}30// Run the function and handle any errors31run().catch(console.dir);
Cette commande va insérer un document dans la collection scores
avec le joueur Flo
et un score de 3
.
Exercice
- Tester l’insertion et l’interrogation de documents dans les collections
scores
etjoueurs
depuis le fichiermongo-test.mjs
- Modifier votre application pour qu’elle utilise MongoDB pour récupérer les scores et les joueurs à la place des fichiers JSON.
Conclusion
Félicitations ! Vous avez maintenant appris à installer MongoDB localement, à interagir avec MongoDB depuis Node.js et à utiliser MongoDB dans votre application pour stocker des données.
À ce stade, vous avez le choix entre :
- Passer aux deux sections suivantes pour utiliser MongoDB Atlas et ajouter un système d’authentification JWT à votre application
- Continuer à développer la partie client de l’application pour la transformer en un jeu fonctionnel