Sommaire :
1. Introduction
2. Installation MongoDB sous Windows
3. Les outils et commandes MongoDB
4. Terminologie
5. Les Collections
6. Les Documents
7. Les opérations CRUD
8. MongoDB VS MySQL Queries
9. MongoDB en Java
COURS MONGODB 2017 2
Introduction
MongoDB (de l'anglais humongous qui peut être traduit par « énorme ») est un SGBD NOSQL
orientée documents à schéma flexible et distribuable, développé depuis 2007 par la société de
logiciel 10gen. MongoDB est écrit en C++ et distribuée sous licence AGPL (licence libre) et très
adaptée aux applications web.
MongoDB a été adoptée par plusieurs grands noms de l’informatique, tels que Foursquare, SAP,
ou bien même GitHub. Il manipule des documents au format BSON (Binary JSON), qui est un
dérivé de JSON plus axé sur la performance, fonctionnant comme une architecture distribuée
centralisée.
COURS MONGODB 2017 3
Installation MongoDB sous Windows
1. Télécharger MongoDB à partir de [Link]
COURS MONGODB 2017 4
Installation MongoDB sous Windows
2. Lancez l’installation
COURS MONGODB 2017 5
Installation MongoDB sous Windows
3. Configuration du path : ajouter C:\Program Files\MongoDB\Server\3.4\bin dans variable
d’environnement
COURS MONGODB 2017 6
Installation MongoDB sous Windows
4. Configuration du dbpath( sous le cmd ) : > mongod --dbpath=C:\data\db
5. Démarrage de MongoDB ( sous le cmd ) : > [Link]
COURS MONGODB 2017 7
Les outils et commandes MongoDB
Mongo : le shell javascript
Mongod : le moteur de base
Mongos : le contrôleur de Sharding
Mongofiles : l’utilitaire GridFS
Mongostat : visualisation des stats d’une instance mongoDB
Mongosniff : le tcpdump de mongo
mongoimport, mongoexport, mongodump, mongorestore, bsondump : Les outils
d’import/export
COURS MONGODB 2017 8
Terminologie
Terminologie SQL Terminologie MongoDB
Base de données Base de données
Table Collection
Ligne Document
Colonne Champ
Index Index
Jointure Imbrication ou Référence
Clef Primaire (peut être multiple) Clef Primaire (une seule, et représentée
par le champ _id)
COURS MONGODB 2017 9
Les Collections « Définition »
Une collection c’est l’équivalent de la table en relationnel, les valeurs peuvent être complexes
(listes, dictionnaires), il y a deux modes de création :
i. Automatiquement lors d’une insertion de document (tuple)
ii. En exécutant la commande [Link](‘<nom_collection>’);
Exemple d’une collection :
COURS MONGODB 2017 10
Les Collections « les opérations»
Créer :
> [Link](' nom_collection ');
Lister :
> show collections;
> [Link]();
Insérer un document :
> db.< nom_collection >.insert( { var1: "valeur", var2: "valeur", var3: "valeur", } );
Supprimer :
> db.<nom_collection>.drop();
COURS MONGODB 2017 11
Les Documents « Définition »
Un documents est l’équivalent d’un enregistrement (tuple) en relationnel,
Il y a deux modes d’insertion :
i. En utilisant la commande db.<nom_collection>.insert() du schell
ii. En utilisant la commande db.<nom_collection>.save () du schell
Chaque document crée contient le champ « _id » : c’est le seul champ obligatoire, utilisé comme
clef primaire dans une collection il est généré automatiquement et indexé.
Le documents supporte plus de types de données que JSON composée de paires clef/valeur,
MongoDB stocke les documents au format BSON (Binary JSON) ou BSON est la représentation
binaire des objets JSON.
COURS MONGODB 2017 12
Les Documents « Le format JSON »
JSON (JavaScript Object Notation) :
Permet de représenter de l’information structurée
Format de données textuelle
Utilise une notation JavaScript
Décrit par la RFC 4627
Un document JSON, ne comprend que deux éléments structurels :
1. des ensembles de paires nom / valeur.
2. des listes ordonnées de valeurs.
COURS MONGODB 2017 13
Les Documents « Structure de Documents »
1. Références :
Inclusion de liens ou références d’un document à un autre
C’est à l’application de résoudre ces références pour accéder aux données associées
On dit qu’on utilise des Modèles de Données Normalisés.
Exemple :
COURS MONGODB 2017 14
Structure de Documents
2. Données Imbriquées (Embedded Data) :
Sauvegarde des données associées dans la même structure de documents
Il est possible d’inclure des documents dans un champ ou un tableau
Permet aux applications d’extraire et manipuler plusieurs niveaux de hiérarchie en une seule
instruction
Ce sont les Modèles de Données Dé normalisés.
Exemple :
COURS MONGODB 2017 15
Les opérations CRUD «Create»
Pour insérer des données dans la collection MongoDB il faut utiliser la syntaxe suivante :
[Link]( document ) ; ou
[Link]( documents ) ; pour plusieurs documents.
Exemple :
>[Link]({
‘titre’ : ‘Le cercle’,
‘genre’ : ‘horreur’,
‘annee’ : 2017
})
COURS MONGODB 2017 16
Les opérations CRUD « Read »
Pour interroger les données de la collection MongoDB il faut utiliser la méthode « find() », les
syntaxes pour cette méthode sont :
[Link]() ;
[Link](Requête) ;
[Link](Requête, Projection) ;
Sans paramètre : tous les documents sont renvoyés
Requête : est un tableau clefs / valeurs spécifiant des opérateurs sur les champs des documents
recherchés
Projection : est un tableau permettant de limiter les champs que l’on souhaite consulter dans les
documents recherchés
COURS MONGODB 2017 17
Les opérations CRUD « Read »
Exemple : soit la collection « films » contient les documents suivant :
{ "_id" : ObjectId("59089552387a"), "titre" : "le cercle", "genre" : "horreur", "année" : "2017" }
{ "_id" : ObjectId("590895ea387b"), "titre" : "arsenal", "genre" : " thriller", "année" : "2017" }
{ "_id" : ObjectId("59089629387c"), "titre" : "criminel", "genre" : " policier", "année" : "2016" }
La commande suivante affiche que les titre des films :
>[Link] .find({},{"titre":1,_id:0})
{"titre" :"le cercle"}
{"titre" :"arsenal"}
{"titre" :"criminel"}
COURS MONGODB 2017 18
Les opérations CRUD « Read »
Utilisation des opérateurs dans la recherche : Dans la plupart des cas, les recherches sont plus
complexes. On peut alors utiliser des opérateurs logiques au lieu de simplement donner une
valeur. Voici quelques opérateurs courants, avec des exemples d’utilisation :
Opérateur Signification Exemple
$gt, $gte, $lt, >, >=, <, <= age: {$gte: 20, $lt: 30}
$lte
$exists Test sur l'existence d'un champ adresse: {$exists: true}
$type Test sur le type d'un champ nom: {$type: 2}
$regex Recherche de pattern dans une chaine prénom: {$regex: "o$"}
$or OU logique sur les clauses fournies $or: [{prénom: {$regex: "o$"
dans le tableau }},adresse: {$exists: true}]
$and ET logique sur les clauses fournies $and: [{prénom: {$regex:"o$" }},
dans le tableau adresse: {$exists: true}]
COURS MONGODB 2017 19
Les opérations CRUD « Update »
Pour mettre à jour le document dans une collection il faut utilisé la méthode « Update() », la syntaxe
est la suivante : [Link](Requête, Modifications) ;
Requête : est de la même forme que pour « find() »
Modifications : est un tableau clefs / valeurs définissant des opérations sur les champs.
Exemple : on utilisent l’exemple précèdent :
>[Link]({‘titre':’criminel'},{$set:{‘annee':2015}}) ;
>[Link]() ;
{ "_id" : ObjectId("59089552387a"), "titre" : "le cercle", "genre" : "horreur", "année" : "2017" }
{ "_id" : ObjectId("590895ea387b"), "titre" : "arsenal", "genre" : " thriller", "année" : "2017" }
{ "_id" : ObjectId("59089629387c"), "titre" : "criminel", "genre" : " policier", "année" : "2015" }
COURS MONGODB 2017 20
Les opérations CRUD « Delete »
Pour supprimer un document dans une collection il faut utilisé la méthode « Remove() », les
syntaxes est les suivantes :
[Link]() ;
[Link](Requête) ;
Sans paramètre : tous les documents sont supprimés.
Requête : Elle désigne les documents qui seront supprimés.
Exemple : La commande suivante supprime tous les documents dont l’année est « 2017 » :
>[Link]({‘annee':2017}) ;
>[Link]() ;
{ "_id" : ObjectId("59089629387c"), "titre" : "criminel", "genre" : " policier", "année" : "2015" }
COURS MONGODB 2017 21
Queries
COURS MONGODB 2017 22
MongoDB VS MySQL
SQL Insert MongoDB Insert
INSERT INTO film(titre,genre,annee) [Link]({
VALUES (“le cercle",” horreur”,2017) ‘titre’ : ‘le cercle’,
‘genre’ : ‘horreur’,
‘annee’ : 2017
})
COURS MONGODB 2017 23
MongoDB VS MySQL
Select SQL Select MongoDB
SELECT * FROM film [Link]()
SELECT id,titre,genre FROM film [Link]({ 'titre': 1, 'genre': 1 })
SELECT titre,genre FROM film [Link]({ 'titre': 1, 'genre': 1,_id:0 })
SELECT * FROM film WHERE annee = 2017 [Link]({ 'annee': 2017 })
SELECT * FROM film WHERE annee != 2017 [Link]( { 'annee': { $ne:2017 } } )
SELECT * FROM people WHERE [Link](
genre="horreur" AND annee=2017 { 'genre': 'horreur',annee: 2017 })
SELECT * FROM film WHERE genre = "thriller" [Link](
OR annee = 2016 { $or: [ { 'genre': 'thriller' } ,
{ 'annee': 2016 } ] })
COURS MONGODB 2017 24
MongoDB VS MySQL
Update SQL Update MongoDB
UPDATE film SET genre = "romance" WHERE [Link](
annee < 2017 { 'annee': { $lt: 2017 } },
{ $set: { genre: "romance" } }
)
UPDATE film SET annee = annee + 1 WHERE [Link](
titre = "le cercle" { titre: "le cercle" } ,
{ $inc: { annee: 1 } }
)
COURS MONGODB 2017 25
MongoDB VS MySQL
SQL delete MongoDB delete
DELETE FROM film [Link]()
DELETE FROM film WHERE genre = "policier" [Link]( { 'genre': 'policier' } )
COURS MONGODB 2017 26