Cours Mongo DB [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

´ NoSQL : MongoDB Les bases de donnees Achref El Mouelhi Docteur de l’universite´ d’Aix-Marseille Chercheur en programmation par contrainte (IA) ´ ´ Ingenieur en genie logiciel [email protected]

H & H: Research and Training

1 / 101

Plan 1

Introduction

2

Installation

3

´ de MongoDB Particularites

4

´ Gestion de base de donnees ´ Creation Suppression Consultation

5

Gestion de collections ´ Creation Suppression Consultation

H & H: Research and Training

2 / 101

Plan 6

Gestion de documents Insertion Consultation Insertion multiple Modification ´ Operations sur les tableaux d’un document

7

´ Operateurs logiques et de comparaison ´ Operateurs de comparaison ´ Operateurs logiques ´ Autres operateurs

8

Index

9

´ Agregations

H & H: Research and Training

3 / 101

Introduction

MongoDB MongoDB ` ´ NoSQL orientee ´ documents systeme de gestion de base de donnees cre´ e´ en 2007

© I H EL

open-source ´ developp e´ en C++

O LM

U

´ SQL (COUNT, GROUP BY, ORDER BY, SUM...) disponibilite´ de plusieurs fonctionnalites

E f e r ch

´ ´ via une console JavaScript possibilite´ d’acceder aux donnees

©A

des drivers disponibles pour plusieurs langages de programmation (Java, JavaScript, PHP, Python, Ruby...) ´ stockees ´ sous format JSON (JavaScript Object Notation) donnees SGBD NoSQL le plus populaire en 2017 (et le plus utilise´ en France) utilise´ par MTV, Disney, Doodle, Adobe, eBay...

H & H: Research and Training

4 / 101

Introduction

MongoDB SQL vs MongoDB Base = Base Table = Collection

© I H EL

OU M L table ont les memes ˆ En BDR, tous les tuples d’une champs (mais E f e ˆ ´ ´ a` les valeurs peuvent differentes (les valeurs sont affectees chretre A des colonnes) © Enregistrement (tuple) = Document

Dans une collection MongoDB, les documents peuvent ne pas avoir un champ partage´ (pas de colonnes dans un document MongoDB).

H & H: Research and Training

5 / 101

Installation

MongoDB

´ echargement, ´ Tel installation et mise en place Allez sur le lien https://www.mongodb.com/try/download/community (onglet Community server), choisissez la version 4.4.1, msi comme Package et Windows comme Plarform.

O LM

© I H EL

U

E f e r ch

´ echarg ´ ´ Installez le fichier tel e.

©A

´ Sous la racine du disque dur (C:\ sous Windows), creez ´ l’arborescence data\db : c’est l’arborescence par defaut qui sera ´ par MongoDB. cherchee

H & H: Research and Training

6 / 101

Installation

MongoDB Ajouter MongoDB au path de Windows ´ Copiez le chemin absolu du repertoire bin de MongoDB dans Programmes files

© I H Dans la barre de recherche, cherchez Syst` EeLme ensuite cliquez U Param` etres syst` eme avanc´ esO M L E f Choisissez Variables d’environnement ensuite dans e r ch VariablesAutilisateur cliquez sur Nouvelle © Saisissez comme nom de variable PATH et comme valeur le ´ chemin absolu du repertoire bin de MongoDB dans Programmes files

H & H: Research and Training

7 / 101

Installation

MongoDB

´ Connexion personnalisee

© I H ´ l’arborescence data/db (on peut la ´ n’importe ou` sur Creez EcrLeer U le disque dur) O M-B L ´ Dans la console, executez start mongod --port E f e numeroPort --dbpath chr cheminDeData/db A Cliquez© sur la touche Entrer Ouvrez une console (invite de commandes)

´ Executez mongo --port numeroPort

H & H: Research and Training

8 / 101

Installation

MongoDB

(Autres) commandes MongoDB ´ mongod : demarrer le serveur

© I H EL

OU M L une base de donnees ´ mongoimport : pour importer E f e r c: h ´ mongoexport pour exporter une base de donnees A © ... ´ mongo : demarrer une connexion client

H & H: Research and Training

9 / 101

´ de MongoDB Particularites

MongoDB

© I H EL

´ Lister les commandes possibles sur les bases de donnees db.help()

O LM

U

E f e r ch

©A

H & H: Research and Training

10 / 101

´ de MongoDB Particularites

MongoDB

Du JSON au BSON

© I H EL

OU M Lnos donnees, ´ MongoDB enregistre toutes saisies sous format E f e JSON, dans le format binaire BSON. chr A © JSON : Binary JSON

H & H: Research and Training

11 / 101

´ de MongoDB Particularites

MongoDB

´ MongoDB : types de donnees

© I H EL

Number Boolean String Array Object

O LM

U

E f e r ch

©A

Null

H & H: Research and Training

12 / 101

´ Gestion de base de donnees

´ Creation

MongoDB ´ ´ Connexion et creation d’une base de donnees ` connexion : use nomBD Apres ´ de port par defaut ´ En se connectant : mongo --port numeroPort nomBD (numero : 27015) ´ ´ de port : mongo nomBD Ou sans preciser le numero

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

13 / 101

´ Gestion de base de donnees

´ Creation

MongoDB ´ ´ Connexion et creation d’une base de donnees ` connexion : use nomBD Apres ´ de port par defaut ´ En se connectant : mongo --port numeroPort nomBD (numero : 27015) ´ ´ de port : mongo nomBD Ou sans preciser le numero

O LM

Remarque

© I H EL

U

E f e r ch

©A

´ n’existe pas, elle sera cre´ ee. ´ Si la base de donnees

H & H: Research and Training

13 / 101

´ Gestion de base de donnees

´ Creation

MongoDB ´ ´ Connexion et creation d’une base de donnees ` connexion : use nomBD Apres ´ de port par defaut ´ En se connectant : mongo --port numeroPort nomBD (numero : 27015) ´ ´ de port : mongo nomBD Ou sans preciser le numero

O LM

Remarque

© I H EL

U

E f e r ch

©A

´ n’existe pas, elle sera cre´ ee. ´ Si la base de donnees

´ ´ Exemple de creation et d’utilisation d’une base de donnees ma base use ma_base H & H: Research and Training

13 / 101

´ Gestion de base de donnees

Suppression

MongoDB

© I H EL

´ courante Suppression de la base de donnees

O LM

db.dropDatabase()

U

E f e r ch

db.runCommand({dropDatabase: 1})

©A

H & H: Research and Training

14 / 101

´ Gestion de base de donnees

Consultation

MongoDB

´ existantes Lister les bases de donnees show dbs

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

15 / 101

´ Gestion de base de donnees

Consultation

MongoDB

´ existantes Lister les bases de donnees show dbs

O LM

© I H EL

U

E f e r ´ admin, config et local il existe trois bases ch de donnees A ©

´ Par defaut

´ si on ne se connecte pas a` une base de donnees, on utilise par ´ ´ appelee ´ test defaut une base de donnees

H & H: Research and Training

15 / 101

Gestion de collections

´ Creation

MongoDB Rappel ´ Une collection est l’equivalent d’une table en SQL.

© I H EL

´ Un document est l’equivalent d’un tuple en SQL.

O LM

U

E f e r ch

©A

H & H: Research and Training

16 / 101

Gestion de collections

´ Creation

MongoDB Rappel ´ Une collection est l’equivalent d’une table en SQL.

© I H EL

´ Un document est l’equivalent d’un tuple en SQL.

O LM

U

E f e r ch

´ Creation d’une collection

©A

Deux solutions :

Directement : db.createCollection(’adresse’) ´ En inserant un document : db.personne.insert({nom: "Wick", prenom: "john"}) H & H: Research and Training

16 / 101

Gestion de collections

Suppression

MongoDB

Suppression d’une collection db.nomCollection.drop()

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

17 / 101

Gestion de collections

Consultation

MongoDB

© I H EL

Lister les collections existantes show collections, ou show tables, ou

O LM

U

E f e r ch

db.getCollectionNames()

©A

H & H: Research and Training

18 / 101

Gestion de documents

Insertion

MongoDB Remarque ` Chaque document possede un id attribue´ par l’utilisateur ou par MongoDB (ObjectId). Le champ id constitue l’index de la collection.

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

19 / 101

Gestion de documents

Insertion

MongoDB Remarque ` Chaque document possede un id attribue´ par l’utilisateur ou par MongoDB (ObjectId). Le champ id constitue l’index de la collection.

Ajout d’un document Deux syntaxes :

O LM

© I H EL

U

E f e r ch

©A

db.nomCollection.insert({cl´ e1: ’val1’, cl´ e2: ’val2’ ... }) ou bien obj=({cl´ e1 :’val1’, cl´ e2: ’val2’ ... }) ensuite ´ ement ´ db.nomCollection.save(obj) (save ajoute l’el s’il n’existe pas, ´ ´ edent) ´ sinon elle le modifie en ecrasant le contenu prec

H & H: Research and Training

19 / 101

Gestion de documents

Insertion

MongoDB Exemple avec insert db.personne.insert( { nom: ’wick’, prenom: ’john’, age: 45, sportif: true } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

20 / 101

Gestion de documents

Insertion

MongoDB Exemple avec insert db.personne.insert( { nom: ’wick’, prenom: ’john’, age: 45, sportif: true } )

Exemple avec save

O LM

© I H EL

U

E f e r ch

©A

db.personne.save( { nom: ’wick’, prenom: ’john’, age: 45, sportif: true } ) H & H: Research and Training

20 / 101

Gestion de documents

Insertion

MongoDB

´ Exemple en definissant l’objet avant objet = { nom: ’dalton’, prenom: ’jack’, niveau: ’master’, }

O LM

© I H EL

U

E f e r ch

©A

db.personne.save(objet)

H & H: Research and Training

21 / 101

Gestion de documents

Insertion

MongoDB

Exemple avec identifiant personnalise´ db.personne.save( { _id: 10, nom: ’dalton’, prenom: ’jack’, niveau: ’master’, } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

22 / 101

Gestion de documents

Insertion

MongoDB

save vs insert save et insert permettent l’insertion et l’insertion multiple. save ajoute ou modifie un document.

O LM

© I H EL

U

insert ajoute seulement de nouveaux documents.

E f e r ch

´ e´ existe dans la save effectue une modification si l’ id specifi collection.

©A

´ ere ` une erreur si l’ id specifi ´ e´ existe dans la insert gen collection.

H & H: Research and Training

23 / 101

Gestion de documents

Consultation

MongoDB

´ Pour verifier que l’ajout a eu lieu db.nomCollection.find()

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

24 / 101

Gestion de documents

Insertion multiple

MongoDB

© I H EL

ˆ Pour faire plusieurs insertions au meme temps

O LM

U

db.nomCollection.insert( [ {cl´ e1 : ’val1’, cl´ e2 : ’val2’ ... }, {cl´ eN : ’valN’, cl´ eM : ’valM’ ... } ] )

E f e r ch

©A

H & H: Research and Training

25 / 101

Gestion de documents

Insertion multiple

MongoDB Exemple db.personne.insert( [ { nom: ’wick’, prenom: ’john’, age: 45, sportif: true

O LM

© I H EL

U

E f e r ch_id: 12,

}, {

©A

nom: ’dalton’, prenom: ’jack’, niveau: ’master’,

} ] )

H & H: Research and Training

26 / 101

Gestion de documents

Modification

MongoDB La modification update() : pour modifier un ou plusieurs documents selon une ou plusieurs conditions.

© I H EL

save() : pour remplacer toutes les valeurs d’un document selon ´ dans la methode. ´ l’identifiant par les valeurs indiquees Si ´ l’identifiant n’existe pas il sera ajoute.

O LM

U

E f e r ch

updateOne() : pour modifier uniquement le premier ´ ´ enregistrement de la selection (par defaut).

©A

updateMany() : pour modifier plusieurs documents. ´ ement ´ replaceOne() : pour remplacer le premier el de la ´ selection. H & H: Research and Training

27 / 101

Gestion de documents

Modification

MongoDB

´ La methode update

© I H EL

` db.nomCollection.update() prend au moins deux parametres :

O LM

U

´ ement(s) ´ ´ le(s) el concerne(s) par la modification

E f e r ch

les modifications

©A

quelques options

H & H: Research and Training

28 / 101

Gestion de documents

Modification

MongoDB Exemple db.personne.update( { _id: 12 }, { prenom: ’bill’, } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

29 / 101

Gestion de documents

Modification

MongoDB Exemple db.personne.update( { _id: 12 }, { prenom: ’bill’, } )

O LM

© I H EL

U

E f e r ch

©A Remarque

´ Le document ayant l’identifiant 12 a desormais un seul champ (hormis l’identifiant) : ´ e´ supprimes. ´ prenom. Les champs nom et niveau ont et

H & H: Research and Training

29 / 101

Gestion de documents

Modification

´ Pour modifier, on peut utiliser un des operateurs suivants $set : pour modifier la valeur d’un champ $unset : pour supprimer un champ ´ $inc : pour incrementer la valeur d’un champ

© I H EL

´ ee ´ $mul : pour multiplier l’ancienne valeur d’un champ par la valeur specifi $rename : pour renommer un champ

O LM

U

´ ´ ee ´ par $min : pour modifier la valeur d’un champ si elle est superieure a` la valeur specifi min (et inversement pour max) ...

E f e r ch

©A

H & H: Research and Training

30 / 101

Gestion de documents

Modification

´ Pour modifier, on peut utiliser un des operateurs suivants $set : pour modifier la valeur d’un champ $unset : pour supprimer un champ ´ $inc : pour incrementer la valeur d’un champ

© I H EL

´ ee ´ $mul : pour multiplier l’ancienne valeur d’un champ par la valeur specifi $rename : pour renommer un champ

O LM

U

´ ´ ee ´ par $min : pour modifier la valeur d’un champ si elle est superieure a` la valeur specifi min (et inversement pour max) ...

E f e r ch

©A

Syntaxe db.nomCollectiondb.update( {cl´ e1: ’val1’ ... }, {$set: {cl´ eN: ’valN’ ... }} ) H & H: Research and Training

30 / 101

Gestion de documents

Modification

MongoDB Exemple db.personne.update( { _id: 12 }, { $set: { prenom: ’peter’, nom: ’white’, age: 45 } } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

31 / 101

Gestion de documents

Modification

MongoDB Exemple db.personne.update( { _id: 12 }, { $set: { prenom: ’peter’, nom: ’white’, age: 45 } } )

O LM

© I H EL

U

E f e r ch

©A

Constats ´ e´ modifie. ´ Le prenom a et ´ e´ ajoutes. ´ Les deux champs nom et age ont et

H & H: Research and Training

31 / 101

Gestion de documents

Modification

MongoDB Exemple avec save db.personne.save( { _id: 12, prenom: ’james’, nom: ’hamilton’, genre: ’h’ } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

32 / 101

Gestion de documents

Modification

MongoDB Exemple avec save db.personne.save( { _id: 12, prenom: ’james’, nom: ’hamilton’, genre: ’h’ } )

O LM

© I H EL

U

E f e r ch

©A Remarque

´ dans save Les champs existant avant modification non mentionnes ´ seront supprimes. H & H: Research and Training

32 / 101

Gestion de documents

Modification

MongoDB ´ La methode update ne modifie que le premier document qui remplit la condition db.personne.update( { prenom: ’john’ }, { $set: { nom: ’abruzzi’ } } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

33 / 101

Gestion de documents

Modification

MongoDB Pour modifier tous les documents qui remplissent la condition, ` on ajoute le parametre multi: true db.personne.update( { prenom: ’john’ }, { $set: { nom: ’abruzzi’ } }, { multi: true } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

34 / 101

Gestion de documents

Modification

MongoDB Ou en utilisant updateMany db.personne.updateMany( { prenom: ’john’ }, { $set: { nom: ’abruzzi’ } } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

35 / 101

Gestion de documents

Modification

MongoDB Si aucun document ne remplit la condition de update, aucun changement ne sera effectue´ db.personne.update( { prenom: ’steven’ }, { $set: { nom: ’segal’ } }, )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

36 / 101

Gestion de documents

Modification

MongoDB On peut effectuer une insertion avec update si aucun document ne remplit la condition en ajoutant upsert: true db.personne.update( { prenom: ’steven’ }, { $set: { nom: ’segal’ } }, { upsert: true } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

37 / 101

Gestion de documents

Modification

MongoDB Et si on veut supprimer un champ d’un document db.personne.update({nom: "bob"}, {$unset:{prenom:1}})

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

38 / 101

Gestion de documents

Modification

MongoDB Et si on veut supprimer un champ d’un document db.personne.update({nom: "bob"}, {$unset:{prenom:1}})

O LM

Explication

© I H EL

U

E f e r ch

´ On commence par selectionner les documents dont le champ nom contient comme valeur bob

©A

´ ` de selection, ´ Si on ne precise aucun critere le premier document de la collection personne sera concerne´ par la modification Pour ce(s) document(s), on supprimera le champ prenom s’il existe. H & H: Research and Training

38 / 101

Gestion de documents

Modification

MongoDB ´ Et si on veut incrementer un champ d’un document db.personne.update({nom: "bob"}, {$inc:{age:20}})

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

39 / 101

Gestion de documents

Modification

MongoDB ´ Et si on veut incrementer un champ d’un document db.personne.update({nom: "bob"}, {$inc:{age:20}})

O LM

Explication

© I H EL

U

E f e r ch

´ On commence par selectionner les documents dont le champ nom contient comme valeur bob

©A

´ ` de selection, ´ Si on ne precise aucun critere le premier document de la collection personne sera concerne´ par la modification ´ Pour ce(s) document(s), on incrementera de 20 l’age pour s’il existe. Sinon, le champ age sera cre´ e´ avec la valeur 20. H & H: Research and Training

39 / 101

Gestion de documents

Modification

MongoDB

ˆ On peut aussi faire plusieurs modifications avec une seule requete db.personne.update({nom: "bob"}, {$inc:{age:20}, $unset:{prenom:1} })

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

40 / 101

Gestion de documents

Modification

MongoDB

ˆ On peut aussi faire plusieurs modifications avec une seule requete db.personne.update({nom: "bob"}, {$inc:{age:20}, $unset:{prenom:1} })

O LM

Explication

© I H EL

U

E f e r ch

©A

ˆ on incremente ´ Avec cette requete, l’age et on supprime le champ prenom pour le premier document ayant un champ nom qui a comme valeur bob

H & H: Research and Training

40 / 101

Gestion de documents

Modification

MongoDB

Et si on veut renommer un champ db.personne.updateMany( {}, { $rename: { nom: ’name’ } } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

41 / 101

Gestion de documents

Modification

MongoDB

Et si on veut renommer un champ db.personne.updateMany( {}, { $rename: { nom: ’name’ } } )

O LM

Explication

© I H EL

U

E f e r ch

©A

´ On commence par selectionner tous les documents Pour ces documents, le champ nom sera renomme´ name

H & H: Research and Training

41 / 101

Gestion de documents

Modification

MongoDB

Supprimer un document db.personne.remove({nom: "bob"})

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

42 / 101

Gestion de documents

Modification

MongoDB

Supprimer un document db.personne.remove({nom: "bob"})

O LM

© I H EL

U

E f e r ch

Explication

©A

´ On commence par selectionner les documents dont le champ nom contient comme valeur bob ´ Ensuite tous ces documents seront supprimes

H & H: Research and Training

42 / 101

Gestion de documents

Modification

MongoDB

´ On peut egalement utiliser

O LM

deleteOne()

© I H EL

U

E f e r ch

deleteMany()

©A

H & H: Research and Training

43 / 101

Gestion de documents

Modification

MongoDB

´ ´ Recup erer tous les documents d’une collection db.personne.find()

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

44 / 101

Gestion de documents

Modification

MongoDB

´ ´ Recup erer tous les documents d’une collection db.personne.find()

© I H EL

OU M L "bob" ... db.personne.find({nom: E f e chr A ©

` Rechercher selon des criteres

H & H: Research and Training

})

44 / 101

Gestion de documents

Modification

MongoDB

´ ´ Recup erer tous les documents d’une collection db.personne.find()

© I H EL

OU M L "bob" ... db.personne.find({nom: E f e chr A © de documents Compter le nombre ` Rechercher selon des criteres

})

db.personne.find({nom: "bob" ... }).count()

H & H: Research and Training

44 / 101

Gestion de documents

Modification

MongoDB

´ Trier le resultat de recherche dans l’ordre croissant

© I H EL

db.personne.find().sort({name: 1})

O LM

U

E f e r ch

©A

H & H: Research and Training

45 / 101

Gestion de documents

Modification

MongoDB

´ Trier le resultat de recherche dans l’ordre croissant

© I H EL

db.personne.find().sort({name: 1})

O LM

U

E f e r ch

´ ´ Trier le resultat de recherche dans l’ordre decroissant

©A

db.personne.find().sort({name: -1})

H & H: Research and Training

45 / 101

Gestion de documents

Modification

MongoDB Sauter quelques documents (ne pas les afficher) db.personne.find().skip(2)

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

46 / 101

Gestion de documents

Modification

MongoDB Sauter quelques documents (ne pas les afficher) db.personne.find().skip(2)

© I H EL

Limiter le nombre de documents a` afficher

O LM

db.personne.find().limit(2)

U

E f e r ch

©A

H & H: Research and Training

46 / 101

Gestion de documents

Modification

MongoDB Sauter quelques documents (ne pas les afficher) db.personne.find().skip(2)

© I H EL

Limiter le nombre de documents a` afficher

O LM

db.personne.find().limit(2)

U

E f e r ch

Trier et limiter le nombre de documents a` afficher

©A

db.personne.find().sort({name: -1}).limit(2)

H & H: Research and Training

46 / 101

Gestion de documents

Modification

MongoDB Sauter quelques documents (ne pas les afficher) db.personne.find().skip(2)

© I H EL

Limiter le nombre de documents a` afficher

O LM

db.personne.find().limit(2)

U

E f e r ch

Trier et limiter le nombre de documents a` afficher

©A

db.personne.find().sort({name: -1}).limit(2) Afficher seulement le premier document db.personne.findOne() H & H: Research and Training

46 / 101

Gestion de documents

Modification

MongoDB ´ Afficher le resultat au format JSON db.personne.find().pretty();

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

47 / 101

Gestion de documents

Modification

MongoDB ´ Afficher le resultat au format JSON db.personne.find().pretty();

© I H EL

Et si on veut seulement afficher quelques champs

OU M L personnes ainsi que leurs c¸a affiche le nom de toutes les E f e identifiants (qui sera chr affiche´ automatiquement) A © db.personne.find({},{nom:1})

H & H: Research and Training

47 / 101

Gestion de documents

Modification

MongoDB ´ Afficher le resultat au format JSON db.personne.find().pretty();

© I H EL

Et si on veut seulement afficher quelques champs

OU M L personnes ainsi que leurs c¸a affiche le nom de toutes les E f e identifiants (qui sera chr affiche´ automatiquement) A © db.personne.find({},{nom:1})

Et si on ne veut pas afficher les id db.personne.find({},{nom:1, id: 0 }) H & H: Research and Training

47 / 101

Gestion de documents

Modification

MongoDB ´ Appeler une fonction pour chaque document de la selection db.personne.find().forEach( function(perso){ print(perso.nom +" "+ perso.prenom); } );

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

48 / 101

Gestion de documents

Modification

MongoDB ´ Appeler une fonction pour chaque document de la selection db.personne.find().forEach( function(perso){ print(perso.nom +" "+ perso.prenom); } );

O LM

© I H EL

U

E f e r ch

Explication

©A

´ Pour chaque document de la selection (forEach), on appelle une ´ fonction qui affiche le nom et le prenom.

H & H: Research and Training

48 / 101

Gestion de documents

Modification

MongoDB

´ ` Peut-on utiliser les expression reguli eres ?

© I H EL

chercher les personnes dont le nom commence par w : db.personne.find({name:/∧w/})

O LM

U

E f e r ch

©A

H & H: Research and Training

49 / 101

Gestion de documents

Modification

MongoDB

´ ` Peut-on utiliser les expression reguli eres ?

© I H EL

chercher les personnes dont le nom commence par w : db.personne.find({name:/∧w/})

O LM

U

E f e r ch

Explication

©A

´ ´ ` les deux / pour indiquer le debut et la fin de l’expression reguli ere ∧ pour indiquer par quoi commence le mot cherche´

H & H: Research and Training

49 / 101

Gestion de documents

Modification

MongoDB chercher les personnes dont le nom se termine par k : db.personne.find({name:/k$/})

© I H L e ou par h : Epar chercher les personnes dont le nom commence U MO db.personne.find({name:/∧[eh]/}) L E f e r Ach dont le nom commence par une lettre chercher les© personnes comprise entre e et w : db.personne.find({name:/∧[e-w]/})

H & H: Research and Training

50 / 101

Gestion de documents

Modification

MongoDB ´ en ER Autres symboles utilises ˆ x? : pour indiquer que la lettre x est facultative. Elle peut y etre 0 ou 1 fois.

© I H EL

ˆ x+ : pour indiquer que la lettre x est obligatoire. Elle peut y etre 1 ou plusieurs fois.

OU M ˆ x* : pour indiquer que la lettre 0, EL x est facultative. Elle peut y etre 1 ou plusieurs fois. ref Ach ´ eter ´ x{2,4}© : pour indiquer que la lettre x doit se rep au moins deux fois et au plus 4 fois.

` quelconque . : un caractere | : le ou logique H & H: Research and Training

51 / 101

Gestion de documents

Modification

MongoDB

On peut aussi utiliser $regex

© I H EL

db.employes.find({prenom: { $regex: /john/}})

OU M ´ On peut aussi desactiver la sensibilit L e´ a` la casse avec $options E f e db.employes.find({prenom: { $regex: /john/, chr A $options: © ’i’ }})

H & H: Research and Training

52 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB ´ Listes des operations ´ ement ´ $push : pour ajouter un el au tableau ´ ement ´ $pop : pour supprimer le premier ou le dernier el d’un tableau

© I H EL

$pull : pour supprimer une ou plusieurs valeurs d’un tableau

O LM

U

´ ements ´ $pullAll : pour supprimer tous les el d’un tableau

E f e r ch

$position : a` utiliser avec push pour indiquer la position d’insertion dans un tableau ´ ´ ements ´ $slice : a` utiliser avec push pour preciser les el a` garder dans un tableau

©A

´ ements ´ $sort : a` utiliser avec push pour ordonner les el d’un tableau ... H & H: Research and Training

53 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Considerons le document suivant :

O LM

© I H EL

U

db.personne.insert({ id : 5, nom : ’wick’, sport: [ ’foot’, ’hand’, ’tennis’] })

E f e r ch

©A

H & H: Research and Training

54 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

Ajouter un nouveau sport au tableau db.personne.update( { id: 5 }, { $push: { "sport": "basket" } } )

© I H EL

U O M ˆ ? Ainsi : Comment ajouter plusieurs sports Lavec une seule requete E f re { id: 5 }, { $push: { sport: db.personne.update( h c [’hockey’,’sky’] } } ) ©A

H & H: Research and Training

55 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

Ajouter un nouveau sport au tableau db.personne.update( { id: 5 }, { $push: { "sport": "basket" } } )

© I H EL

U O M ˆ ? Ainsi : Comment ajouter plusieurs sports Lavec une seule requete E f re { id: 5 }, { $push: { sport: db.personne.update( h c [’hockey’,’sky’] } } ) ©A Non, c¸a rajoute un tableau dans notre tableau

H & H: Research and Training

55 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

© I H db.personne.update( { id: 5 }, { $push: EL { sport: U {’hockey’,’sky’} } } ) MO L E f e r ch A © Ou comme-c¸a ?

H & H: Research and Training

56 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

© I H db.personne.update( { id: 5 }, { $push: EL { sport: U {’hockey’,’sky’} } } ) MO L E f e r ´ ere ` unecerreur h Non, c¸a gen A © Ou comme-c¸a ?

H & H: Research and Training

56 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

Solution

© I H EL

db.personne.update( { id: 5 }, { $push: { "sport": { $each: [’basket’,’sky’] } } } )

O LM

U

E f e r ch

Remarque

©A

´ ement ´ ` le dernier el ´ ement ´ $push : ajoute naturellement l’el apres du tableau

H & H: Research and Training

57 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ ement ´ ´ Et si on veut ajouter un el a` une position precise db.personne.update( { id: 5 }, { $push: { "sport": { $each: [’volley’], $position: 2 } } } )

O LM

© I H EL

U

E f e r ch

Explication

©A

´ ement ´ Ceci rajoute l’el volley a` la position 2 du tableau sport ` position est d’indice 0) (la premiere ´ ements ´ ´ es ´ Les autres el seront decal

H & H: Research and Training

58 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB ´ ement ´ Comment supprimer le premier el d’un tableau ? db.personne.update( { id: 5 }, { $pop: { sport: -1 } } )

© I H ´ ement ´ Comment supprimer le dernier el d’un tableau EL ? U MO db.personne.update( {Lid: 5 }, { $pop: { sport: E f 1 } } ) re h c ©A ´ ement ´ Comment supprimer un el quelconque d’un tableau ?

db.personne.update( { id: 5 }, { $pull: { ´ ement ´ "sport": "foot" } } ) : supprime l’el foot du tableau sport H & H: Research and Training

59 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

© I H EL

´ ements ´ ˆ ? Comment supprimer plusieurs el avec une seule requete

O LM

U

db.personne.update( { id: 5 }, { $pull: { sport: { $in: [’hockey’,’basket’] } } } )

E f e r ch

©A

H & H: Research and Training

60 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Considerons le document cre´ e´ de la fac¸on suivante :

© I H EL

db.personne.insert({ _id : 6, nom : ’wick’, sport : [ ’foot’, ’hand’, ’tennis’] })

O LM

U

E f e r ch

©A

H & H: Research and Training

61 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Si on execute db.personne.update( { _id: 6 }, {$push: { sport: { $each: [ ’hockey’, ’sky’, ’volley’ ], $slice: -5 } } })

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

62 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB Ensuite db.personne.find({_id:6}).pretty(); ´ Le resultat sera : { "_id" : 6, "nom" : "wick", "sport" : [ "hand", "tennis", "hockey", "sky", "volley" ]

O LM

© I H EL

U

E f e r ch

©A

} H & H: Research and Training

63 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Considerons le document cre´ e´ de la fac¸on suivante :

© I H EL

db.personne.insert({ _id : 7, nom : ’wick’, sport : [ ’foot’, ’hand’, ’tennis’] })

O LM

U

E f e r ch

©A

H & H: Research and Training

64 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Si on execute db.personne.update( { _id: 7 }, {$push: { sport: { $each: [ ’hockey’, ’sky’, ’volley’ ], $slice: 5 } } })

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

65 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB Ensuite db.personne.find({_id:7}).pretty(); ´ Le resultat sera : { "_id" : 7, "nom" : "wick", "sport" : [ "foot", "hand", "tennis", "hockey", "sky" ]

O LM

© I H EL

U

E f e r ch

©A

} H & H: Research and Training

66 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Considerons le document cre´ e´ de la fac¸on suivante : db.personne.insert({ _id : 8, nom : ’wick’, sport : [’hand’, ’foot’, })

O LM

E f e r ch

© I H EL

U

’tennis’]

©A

H & H: Research and Training

67 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Si on execute db.personne.update( { _id: 8 }, {$push: { sport: { $each: [’sky’, ’volley’ , ’hockey’], $sort: 1 } } })

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

68 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB Ensuite db.personne.find({_id:8}).pretty(); ´ Le resultat sera :

© I H EL

{ "_id" : 8, "nom" : "wick", "sport" : [ "foot", "hand", "hockey", "tennis", "sky", "volley" ]

O LM

U

E f e r ch

©A

} H & H: Research and Training

69 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Pour trier dans l’ordre decroissant $sort: -1

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

70 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

Et quand il s’agit d’un tableau d’objet ? ´ Considerons le document suivant :

© I H EL

db.personne.insert({ _id : 10, nom : ’wick’, notes: [ {’programmation’: 17, ’coefficient’: 4}, {’OS’: 10, ’coefficient’: 2} ] })

O LM

U

E f e r ch

©A

H & H: Research and Training

71 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ ement ´ Comment ajouter un nouvel el au tableau ? db.personne.update( { _id: 10 }, { $push: { notes : {’compilation’: 15, ’ coefficient’: 1} } } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

72 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

Et pour supprimer ?

© I H EL

db.personne.update( { _id: 10 }, { $pull: { notes : {’compilation’: 15, ’coefficient’: 1} } } )

O LM

U

E f e r ch

©A

H & H: Research and Training

73 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

´ Considerons le document suivant : db.personne.insert({ _id : 11, nom : ’wick’, notes: [ {’programmation’: 17, ’coefficient’: 4, optionnel: false}, {’OS’: 10, ’coefficient’: 2} ] })

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

74 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB ˆ de suppression suivante ? Que fait la requete db.personne.update( { _id: 11 }, { $pull: { notes : {’programmation’: 17, ’coefficient’: 4} } } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

75 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB ˆ de suppression suivante ? Que fait la requete db.personne.update( { _id: 11 }, { $pull: { notes : {’programmation’: 17, ’coefficient’: 4} } } )

O LM

© I H EL

U

E f e r ch

©A

ˆ ˆ Elle supprime quand-meme l’objet meme s’il n’y pas de ` correspondance complete

H & H: Research and Training

75 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB ´ ´ Comment faire pour eviter cette problematique ? db.personne.update( { _id: 11 }, { $pull: { notes : { $elemMatch: {’programmation’: 17, ’coefficient’: 4} } } } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

76 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB ´ ´ Comment faire pour eviter cette problematique ? db.personne.update( { _id: 11 }, { $pull: { notes : { $elemMatch: {’programmation’: 17, ’coefficient’: 4} } } } )

O LM

© I H EL

U

E f e r ch

©A

Cette fois-ci, c¸a ne supprime pas l’objet car l’attribut optionnel: ´ e´ precis ´ e´ true n’a pas et H & H: Research and Training

76 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

Pour chercher un document selon une valeur dans son tableau d’objet db.personne.find( {"notes.programmation": {$ne:17} } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

77 / 101

Gestion de documents

´ Operations sur les tableaux d’un document

MongoDB

Pour chercher un document selon une valeur dans son tableau d’objet db.personne.find( {"notes.programmation": {$ne:17} } )

O LM

© I H EL

U

E f e r ch

A © Cela permet de chercher toutes les personnes dont la note en ´ programmation est differente de 17.

H & H: Research and Training

77 / 101

´ Operateurs logiques et de comparaison

MongoDB

© I H EL

´ relationnelles Comme pour les bases de donnees ´ operateurs de comparaison

U

E f e r ch

´ operateurs logiques ...

O LM

©A

H & H: Research and Training

78 / 101

´ Operateurs logiques et de comparaison

´ Operateurs de comparaison

MongoDB

´ la collection suivante (etudiant) : Commenc¸ons par creer

© I H EL

{"_id" : 1, "nom" : "wick", "notes": [10, 15, 12], "age" : 19 }

O LM

U

{"_id" : 2, "nom" : "bob", "notes": [18, 8, 12], "age" : 35 }

E f e r ch

{"_id" : 3, "nom" : "wolf", "notes": [7, 6, 13], "age" : 25 }

©A

{"_id" : 4, "nom" : "green", "notes": [18, 16, 9], "age" : 22 }

H & H: Research and Training

79 / 101

´ Operateurs logiques et de comparaison

´ Operateurs de comparaison

MongoDB

´ ´ ˆ es ´ de plus de 30 ans Comment selectionner les etudiants ag

© I H EL

db.etudiant.find({"age":{$gt:20}})

O LM

U

E f e r ch

©A

H & H: Research and Training

80 / 101

´ Operateurs logiques et de comparaison

´ Operateurs de comparaison

MongoDB

´ ´ ˆ es ´ de plus de 30 ans Comment selectionner les etudiants ag

© I H EL

db.etudiant.find({"age":{$gt:20}})

O LM

U

E f e r ch

{"_id" : 2, "nom" : "bob", "notes": [18, 8, 12], "age" : 35 }

©A

{"_id" : 3, "nom" : "wolf", "notes": [7, 6, 13], "age" : 25 } {"_id" : 4, "nom" : "green", "notes": [18, 16, 9], "age" : 22 }

H & H: Research and Training

80 / 101

´ Operateurs logiques et de comparaison

´ Operateurs de comparaison

MongoDB ´ Les operateurs de comparaison ´ ` $gt : greater than (superieur a)

© I H EL

´ ´ $gte : greater than or equal (superieur ou egal)

U O M ´ ´ $lte : less than or equal (infL erieur ou egal) E f e ´ ch `r $eq : equal (egal a) A ©equal ´ $ne : not (different de ) ´ ` $lt : less than (inferieur a)

$in : dans (un tableau...) $nin : not in (pas dans)

H & H: Research and Training

81 / 101

´ Operateurs logiques et de comparaison

´ Operateurs logiques

MongoDB ´ ´ Comment selectionner les etudiants dont l’age est entre 30 et 40 ans db.etudiant.find( {$and: [ { age:{$gte:20}}, { age:{$lte:30}} ] } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

82 / 101

´ Operateurs logiques et de comparaison

´ Operateurs logiques

MongoDB ´ ´ Comment selectionner les etudiants dont l’age est entre 30 et 40 ans db.etudiant.find( {$and: [ { age:{$gte:20}}, { age:{$lte:30}} ] } )

O LM

© I H EL

U

E f e r ch

©A

{"_id" : 1, "nom" : "wick", "notes": [10, 15, 12], "age" : 19 } {"_id" : 3, "nom" : "wolf", "notes": [7, 6, 13], "age" : 25 } {"_id" : 4, "nom" : "green", "notes": [18, 16, 9], "age" : 22 } H & H: Research and Training

82 / 101

´ Operateurs logiques et de comparaison

´ Operateurs logiques

MongoDB

´ Les operateurs logiques $and : et $or : ou

O LM

© I H EL

U

E f e r ch

$not : le non logique

©A

$nor : ou exclusif

H & H: Research and Training

83 / 101

´ Operateurs logiques et de comparaison

´ Autres operateurs

MongoDB Afficher les personnes dont le champ name existe db.personne.find( {name: {$exists:true} } )

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

84 / 101

´ Operateurs logiques et de comparaison

´ Autres operateurs

MongoDB Afficher les personnes dont le champ name existe db.personne.find( {name: {$exists:true} } )

O LM

© I H EL

U

E f e r ch

Afficher les personnes dont l’age est divisible par 5

©A

db.etudiant.find( { age: { $mod: [ 5, 0 ] } } ) H & H: Research and Training

84 / 101

Index

MongoDB

C’est quoi ? et pourquoi ?

© I H EL

Si on a un champ (autre que id) selon lequel on effectue des ` frequemment ´ recherches tres

OU M Lon peut creer ´ erer ´ ´ un index sur ce champ Pour accel la recherche, E f e hrindex sur chaque id d’une collection (et il est ´ Par defaut, on c a un A impossible © de le supprimer)

H & H: Research and Training

85 / 101

Index

MongoDB Pour consulter la liste d’index sur la collection personne db.personne.getIndexes(); c¸a affiche :

© I H EL

[ {

U

"v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.personne"

O LM

E f e r ch

©A } ]

H & H: Research and Training

86 / 101

Index

MongoDB

´ un nouvel index sur le champ nom Pour creer

© I H EL

db.personne.ensureIndex(nom:1); c¸a affiche : {

O LM

U

"createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1

E f e r ch

}

©A

H & H: Research and Training

87 / 101

Index

MongoDB On peut consulter une nouvelle fois la liste d’index db.personne.getIndexes(); c¸a affiche : [ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.personne"

O LM

}, {

© I H EL

U

E f e r ch

© A"v" : 2,

"key" : { "nom" : 1 }, "name" : "nom_1", "ns" : "test.personne" } ] H & H: Research and Training

88 / 101

Index

MongoDB Pour supprimer un index sur le champ nom db.personne.dropIndex(nom:1) ´ On verifie db.personne.getIndexes(); c¸a affiche : [ {

©

© I H EL

OU M "v" : 2,L E f "key" : { e r h c "_id" : 1 A

}, "name" : "_id_", "ns" : "test.personne"

} ] H & H: Research and Training

89 / 101

´ Agregations

MongoDB

© I H L forme d’un ˆ qui retourne un resultat ´ UE C’est une requete sous tableau MO L E f ´ c¸a permet d’utiliserrdes fonctions d’agregations comme en SQL e h c ©A

C’est quoi ? et pourquoi ?

H & H: Research and Training

90 / 101

´ Agregations

MongoDB Exemple db.etudiant.aggregate( [ {$project: {

© I H EL

_id: "$nom", moyenne: {$avg: "$notes"}

O LM

}

U

E f e r ch

} ]);

©A

H & H: Research and Training

91 / 101

´ Agregations

MongoDB Exemple db.etudiant.aggregate( [ {$project: {

© I H EL

_id: "$nom", moyenne: {$avg: "$notes"}

O LM

}

E f e r ch

} ]);

©A

´ Le resultat { { { {

"_id" "_id" "_id" "_id"

U

: : : :

"wick", "moyenne" : 12.333333333333334 } "bob", "moyenne" : 12.666666666666666 } "wolf", "moyenne" : 8.666666666666666 } "green", "moyenne" : 14.333333333333334 }

H & H: Research and Training

91 / 101

´ Agregations

MongoDB

© I H ´ ELpermet de remodeler $project : est un pipeline d’agregation qui U une collection MO L E´ f ´ c¸a permet d’utiliserrdes operateurs d’agregations comme en SQL e h c ©A

Explication

H & H: Research and Training

92 / 101

´ Agregations

MongoDB ´ Autres pipelines d’agregation $group : Permet de regrouper des documents comme un group by en SQL

© I H EL

´ une nouvelle collection a` partir d’une $out : Permet de creer ´ a` autre qui existe dej

O LM

U

´ $unwind : Permet de decomposer un tableau en autant de ´ ement. ´ documents que d’el

E f e r chde filtrer les documents selon la condition $match : Permet A ´ ee ´© specifi

´ ´ $sample : Permet de selectionner aleatoirement un nombre de ´ ee ´ dans la requete ˆ documents specifi ... H & H: Research and Training

93 / 101

´ Agregations

MongoDB ´ ´ Autres operateurs d’agregation $max, $min, $sum, $sqrt, $pow, $floor, $divide, $abs ... $ifNull

© I H EL

OU M L $arrayToObject, $dateFromString, $dateToString... E f e r ch$size... $split, $slice, A © $map, $reduce

$substr, $toUpper, $toLower, $concat ...

H & H: Research and Training

94 / 101

´ Agregations

MongoDB

Exemple avec sample db.etudiant.aggregate( [ { $sample: { size: 3 } } ]

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

95 / 101

´ Agregations

MongoDB

Exemple avec sample db.etudiant.aggregate( [ { $sample: { size: 3 } } ]

O LM

© I H EL

U

E f e r ch

©A

´ Le resultat ´ Il choisit aleatoirement trois documents de la collection

H & H: Research and Training

95 / 101

´ Agregations

MongoDB Exemple avec unwind db.etudiant.aggregate( [ { $unwind : "$notes" } ]);

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

96 / 101

´ Agregations

MongoDB Exemple avec unwind db.etudiant.aggregate( [ { $unwind : "$notes" } ]);

´ Le resultat { { { { { { { { { { { {

"_id" "_id" "_id" "_id" "_id" "_id" "_id" "_id" "_id" "_id" "_id" "_id"

: : : : : : : : : : : :

1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4,

"nom" "nom" "nom" "nom" "nom" "nom" "nom" "nom" "nom" "nom" "nom" "nom"

: : : : : : : : : : : :

U

"wick", "notes" : 10, "age" : 19 } "wick", "notes" : 15, "age" : 19 } "wick", "notes" : 12, "age" : 19 } "bob", "notes" : 18, "age" : 25 } "bob", "notes" : 8, "age" : 25 } "bob", "notes" : 12, "age" : 25 } "wolf", "notes" : 7, "age" : 35 } "wolf", "notes" : 6, "age" : 35 } "wolf", "notes" : 13, "age" : 35 } "green", "notes" : 18, "age" : 22 } "green", "notes" : 16, "age" : 22 } "green", "notes" : 9, "age" : 22 }

E f e r ch

©A

H & H: Research and Training

O LM

© I H EL

96 / 101

´ Agregations

MongoDB Exemple avec out db.etudiant.aggregate( [ {$project: {

© I H EL _id: "$nom", U O {$avg: "$notes"} moyenne: M L } E f e r Ach

}, { $out : "moyennes" } ]);

©

H & H: Research and Training

97 / 101

´ Agregations

MongoDB Exemple avec out db.etudiant.aggregate( [ {$project: {

© I H EL _id: "$nom", U O {$avg: "$notes"} moyenne: M L } E f e r Ach

}, { $out : "moyennes" } ]);

©

´ ´ Verifier la creation de la collection moyennes show collections; ou db.moyennes.find(); H & H: Research and Training

97 / 101

´ Agregations

MongoDB ´ Considerons la collection books suivante (Exemple de la documentation officielle { "_id" : 8751, "title" : "The Banquet", "author" : "Dante", "copies" : 2 } { "_id" : 8752, "title" : "Divine Comedy", "author" : "Dante", "copies" : 1 } { "_id" : 8645, "title" : "Eclogues", "author" : " Dante", "copies" : 2 } { "_id" : 7000, "title" : "The Odyssey", "author" : "Homer", "copies" : 10 } { "_id" : 7020, "title" : "Iliad", "author" : "Homer ", "copies" : 10 }

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

98 / 101

´ Agregations

MongoDB Exemple avec group db.books.aggregate( [ { $group : { _id : "$author", books: { $push: "$title" } } } ]);

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

99 / 101

´ Agregations

MongoDB Exemple avec group db.books.aggregate( [ { $group : { _id : "$author", books: { $push: "$title" } } } ]);

O LM

© I H EL

U

E f e r ch

A © ´ Le resultat :

{"_id": "Homer", "books": ["The Odyssey", "Iliad"]} {"_id": "Dante", "books": ["The Banquet","Divine Comedy","Eclogues"]} H & H: Research and Training

99 / 101

´ Agregations

MongoDB Exemple avec match db.books.aggregate( [ { $match : { author : "Dante" } } ]);

O LM

© I H EL

U

E f e r ch

©A

H & H: Research and Training

100 / 101

´ Agregations

MongoDB Exemple avec match db.books.aggregate( [ { $match : { author : "Dante" } } ]);

O LM

´ Le resultat :

© I H EL

U

E f e r ch

©A

{ "_id" : 8751, "title" : "The Banquet", "author" : "Dante", "copies" : 2 } { "_id" : 8752, "title" : "Divine Comedy", "author" : "Dante", "copies" : 1 } { "_id" : 8645, "title" : "Eclogues", "author" : " Dante", "copies" : 2 } H & H: Research and Training

100 / 101

´ Agregations

MongoDB

Documentation officielle

O LM

https://docs.mongodb.com/

© I H EL

U

E f e r ch

©A

H & H: Research and Training

101 / 101