Skip to content

Développement API - Pierre Blarre

MongoDB

Icône Présentation
1 / 1

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

  1. 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.

  1. Installez MongoDB Shell pour interagir avec MongoDB en ligne de commande
  2. Installez MongoDB Compass pour interagir avec MongoDB en interface graphique
  3. Lancez MongoDB Community Server et MongoDB Compass pour commencer à utiliser MongoDB.

Créer une base de données

  1. Lancez MongoDB Compass
  2. Cliquez sur “New Connection”
  3. Normalement, MongoDB Compass devrait vous proposer une connexion locale à mongodb://localhost:27017
  4. Cliquez sur “Connect” pour vous connecter à votre base de données locale
  5. Cliquez sur “Create Database” pour créer une nouvelle base de données
  6. Entrez le nom de la base de données (Balles par exemple), créez une collection scores et cliquez sur “Create Database”
  7. Créez une seconde collection joueurs de la même manière

MongoDB Compass

  1. Importez le contenu des fichiers JSON scores.json et joueurs.json précédemment créés dans les collections MongoDB scores et joueurs 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 :

Terminal window
npm install mongodb

Interaction entre MongoDB et Node.js

Pour se connecter à MongoDB, vous pouvez utiliser la méthode connect du module mongodb :

mongo-test.mjs
import { MongoClient, ServerApiVersion } from 'mongodb';
const uri = "mongodb://localhost:27017";
// Create a MongoClient with a MongoClientOptions object to set the Stable API version
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
}
});
async function run() {
try {
// Connect the client to the server (optional starting in v4.7)
await client.connect();
// Send a ping to confirm a successful connection
await client.db("admin").command({ ping: 1 });
console.log("Pinged your deployment. You successfully connected to MongoDB!");
} finally {
// Ensures that the client will close when you finish/error
await client.close();
}
}
run().catch(console.dir);

Testez la connexion à MongoDB en exécutant le script mongo-test.mjs :

Terminal window
node mongo-test.mjs
> 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 :

import { MongoClient } from "mongodb";
// Replace the uri string with your MongoDB deployment's connection string.
const uri = "<connection string uri>";
const client = new MongoClient(uri);
async function run() {
try {
// Get the database and collection on which to run the operation
const database = client.db("sample_mflix");
const movies = database.collection("movies");
// Query for a movie that has the title 'The Room'
const query = { title: "The Room" };
const options = {
// Sort matched documents in descending order by rating
sort: { "imdb.rating": -1 },
// Include only the `title` and `imdb` fields in the returned document
projection: { _id: 0, title: 1, imdb: 1 },
};
// Execute query
const movie = await movies.findOne(query, options);
// Print the document returned by findOne()
console.log(movie);
} finally {
await client.close();
}
}
run().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 :

import { MongoClient } from "mongodb";
// Replace the uri string with your MongoDB deployment's connection string.
const uri = "<connection string uri>";
const client = new MongoClient(uri);
async function run() {
try {
// Get the database and collection on which to run the operation
const database = client.db("sample_mflix");
const movies = database.collection("movies");
// Query for movies that have a runtime less than 15 minutes
const query = { runtime: { $lt: 15 } };
const options = {
// Sort returned documents in ascending order by title (A->Z)
sort: { title: 1 },
// Include only the `title` and `imdb` fields in each returned document
projection: { _id: 0, title: 1, imdb: 1 },
};
// Execute query
const cursor = movies.find(query, options);
// Print a message if no documents were found
if ((await movies.countDocuments(query)) === 0) {
console.log("No documents found!");
}
// Print returned documents
for await (const doc of cursor) {
console.dir(doc);
}
} finally {
await client.close();
}
}
run().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 :

import { MongoClient } from "mongodb";
// Replace the uri string with your MongoDB deployment's connection string.
const uri = "<connection string uri>";
// Create a new client and connect to MongoDB
const client = new MongoClient(uri);
async function run() {
try {
// Connect to the "insertDB" database and access its "haiku" collection
const database = client.db("Balles");
const scores = database.collection("scores");
// Create a document to insert
const doc = {
joueur: "Flo",
score: 3,
};
// Insert the defined document into the "haiku" collection
const result = await scores.insertOne(doc);
// Print the ID of the inserted document
console.log(`A document was inserted with the _id: ${result.insertedId}`);
} finally {
// Close the MongoDB client connection
await client.close();
}
}
// Run the function and handle any errors
run().catch(console.dir);

Cette commande va insérer un document dans la collection scores avec le joueur Flo et un score de 3.

Exercice

  1. Tester l’insertion et l’interrogation de documents dans les collections scores et joueurs depuis le fichier mongo-test.mjs
  2. 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