Vous êtes sur la page 1sur 7

TP 1 : Modélisation des données de BDD NoSQL avec MongoDB :

Création et manipulation de base

Ce premier sujet de TP va aborder la modélisation et la conception


des données avec MongoDB. Bien évidemment, il existe différents
outils côté client qui se reposent sur le GUI (MongoDB Compass,
Studio 3T, Robo 3T, NoSQLBooster …) mais dans ce module on va
s’intéresser plus particulièrement à Mongo Shell. Pensez à consulter la
liste des références mises à la fin du document.
I. Téléchargement, installation et mise en place
1. Télécharger et installer MongoDB Community server (serveur) :
a. https://www.mongodb.com/try/download/community
2. Modifier les variable d’environnement système PATH en
ajoutant : C:\Program Files\MongoDB\Server\6.0\bin
3. Créer un répertoire sous la racine pour stocker vos BD
C:\data\db
4. Lancer le serveur avec la commande mongod sur l’invite de
commande
5. Télécharger et installer Mongo Shell (client):
6. https://www.mongodb.com/try/download/shell
7. Extraire les fichiers à partir de l’archive dans la racine
8. Modifier les variable d’environnement système PATH en
ajoutant : C:\mongosh-1.5.4-win32-x64\bin
9. Lancer le serveur avec la commande mongosh sur une nouvelle
invite de commande

II. Quelques commandes basiques à retenir : (testez les


commandes de tous les exemples ci-dessous !)

▪ mongod : démarrer le serveur


▪ mongosh ou encore mongosh –shell : démarrer une connexion
client (démarrer le shell javascript)
▪ mongosh –version : savoir la version du mongo Shell
▪ show dbs : afficher la liste des BDD existantes. Il existe deux
bases de données admin et local. Si on ne se connecte pas à une
base de données, on travaille (par defaut) dans une base de
données appelée test.

▪ use db : pour créer une BD nommée db. Si la base de données


n’existe pas, elle sera créée. Si elle existe déjà, vous serez redirigé
vers la BD db.
▪ db.createCollection(‘col’) : créer une collection col dans la BD
db directement.
▪ db.col.insert({nom: "Wick", prenom: "john"}) pour insérer un
document dans la collection col
▪ show collections : afficher liste des collections de la BD.
▪ db.col.drop() : supprimer la collection
▪ db.dropDatabase() : supprimer une BD
▪ db.help() : Lister les commandes possibles sur les BDD
III. Requêtes CRUD
1. Insertion des données : Create
L’insertion de données dans votre base de données MongoDB se
fait avec une des méthodes suivantes :
▪ insertOne() : La méthode insertOne va simplement insérer un
nouveau document sans faire attention à ce qui existe déjà dans
la base.
db.col.insert({“champ1” : “val1” ,
“champ2” : “val2”, … })
▪ insertMany() : insérer plusieurs documents en une opération
db.col.insertMany( [ {clé1 : ’val1’, clé2 : ’val2’ ...} ,
{cléN : ’valN’, cléM : ’valM’... }] )
Note : il existe également la mongodb query insert qui peut insérer un
ou plusieurs documents dans la collection.
2. Lecture/Recherche des données : Read
▪ db.col.find() : afficher/récupérer tous les documents de la
collection (équivalent à la cmd Select en SQL)
▪ Rechercher selon des critères : db.personne.find({nom: "bob"
... })
▪ Afficher seulement le premier document : db.col.findOne()
▪ Afficher le résultat au format JSON : db.col.find().pretty();
▪ Et si on veut seulement afficher quelques champs :
db.personne.find({},{nom:1}) ; càd affiche les noms de toutes
les personnes ainsi que leurs identifiants (qui sera affiché
automatiquement)
▪ Et si on ne veut pas afficher les _id :
db.personne.find({},{nom:1, id: 0 })
▪ Appeler une fonction pour chaque document de la sélection :
db.personne.find().forEach( function(perso){
print(perso.nom +" "+ perso.prenom); });
Explication : Pour chaque document de la sélection (forEach), on
appelle une fonction qui affiche le nom et le prénom.

➢ Utilisation des expressions régulières :


▪ Ex1 : chercher les personnes dont le nom commence par w :
db.personne.find({name: /^w/ })
Les deux / pour indiquer le début et la fin de l’expression régulière
^ pour indiquer par quoi commence le mot cherché
▪ Ex 2 : Chercher les personnes dont le nom se termine par k :
db.personne.find({name:/k$/ })
▪ Ex 3 : chercher les personnes dont le nom commence par e ou
par h : db.personne.find({name:/^[eh]/})
▪ Ex : db.col.find().count() : nombre de documents dans la
collection
▪ Trier le résultat de recherche dans l’ordre croissant :
db.personne.find().sort({name: 1})
▪ Trier le résultat de recherche dans l’ordre décroissant
db.personne.find().sort({name: -1})

3. Modification des données : Update


▪ db.col.update() : prend en premier paramètre la requête
discriminante pour trouver le premier document correspondant
aux critères. En second paramètre, on retrouvera le ou les
opérateurs de modifications (le type de modification à
effectuer).
▪ db.col.update({ clé1 :’val1’,...}, {$set : {clén: ‘valn’}})
Types de modifications (opérations de update) :
▪ $set : modifier la valeur d’un champ
▪ $unset : supprimer un champ
▪ $rename : renommer un champ
▪ $inc : pour incrémenter la valeur d’un champ
▪ $mul : pour multiplier l’ancienne valeur d’un champ par la
valeur spécifiée
▪ $min : pour modifier la valeur d’un champ si elle est supérieure
à la valeur spécifiée par min (et inversement pour max)
Autres méthodes de mise à jour :
▪ updateOne() : pour modifier le premier enregistrement de la
sélection (par défaut)
▪ updateMany() : pour modifier toute la sélection
Exemple 1:
db.personne.update({nom: "bob"}, {$set:{ville:’Marseille’}})
Explication : On commence par sélectionner les documents dont le
champ nom contient comme valeur bob. Si on n’utilise pas
updateMany, seul le premier document de la collection personne sera
concernée par la modification. Pour ce document, on mettra la valeur
Marseille pour le champ ville s’il existe. Sinon, le champ ville sera
créé avec la valeur Marseille.
Exemple 2 :
db.personne.update({nom: "bob"}, {$inc: {age:20}})
Explication : On commence par sélectionner les documents dont le
champ nom contient comme valeur bob. Si on ne précise aucun critère
de sélection, le premier document de la collection personne sera
concerné par la modification. Pour ce(s) document(s), on incrémente
de 20 l'âge pour s’il existe. Sinon, le champ age sera créé avec la
valeur 20.
Exemple 3 :db.personne.update({nom: "bob"}, {$inc:{age:20},
$unset:{prenom:1}})
Explication : Avec cette requête, on incrémente l'âge et on supprime
le champ prenom pour le premier document ayant un champ nom qui
a comme valeur bob
Exemple 4 : db.personne.updateMany( {}, {$rename: { nom: ’name’
}} )
Explication : On commence par sélectionner tous les documents Pour
ces documents, le champ nom sera renommé name.

4. Suppression des données : Delete


▪ db.posts.deleteOne ({ category: "technology", status:
"published" })
▪ Pour effacer toute une collection : db.posts.deleteMany({})
▪ Effacer uniquement les documents suivant certains critères :
db.posts.deleteMany({ tags : "technology" })
▪ On peut également utiliser : remove ()
Ex : db.personne.remove({nom: "bob"})
On commence par sélectionner les documents dont le champ nom
contient comme valeur bob. Ensuite tous ces documents seront
supprimés.

Un Compte-Rendu CR (document pdf, nom-prenom.pdf) à rendre à


la fin de la séance. Mettez les extraits de vos requêtes et codes
MongoDB (captures d’écrans) avec une explication sur vos codes,
Vous ne rendrez que votre CR (pas de fichiers de code en plus)
Envoyez votre CR par à : malika.elbaz.int@groupe-gema.com

Références à consulter :
1. Documentation officielle de MongoDB :
https://www.mongodb.com/docs/manual/tutorial/getting-started/

Vous aimerez peut-être aussi