Académique Documents
Professionnel Documents
Culture Documents
1 / 101
Plan
1 Introduction
2 Installation
3 Particularités de MongoDB
4 Gestion de base de données
Création
Suppression
Consultation
5 Gestion de collections
Création
Suppression
Consultation
2 / 101
Plan
6 Gestion de documents
Insertion
Consultation
Insertion multiple
Modification
Opérations sur les tableaux d’un document
7 Opérateurs logiques et de comparaison
Opérateurs de comparaison
Opérateurs logiques
Autres opérateurs
8 Index
9 Agrégations
3 / 101
Introduction
MongoDB
MongoDB
créé en 2007
open-source
H I ©
développé en C++
UEL
L MO
disponibilité de plusieurs fonctionnalités SQL (COUNT, GROUP BY, ORDER BY, SUM...)
re fE
possibilité d’accéder aux données via une console JavaScript
h
A c
©
des drivers disponibles pour plusieurs langages de programmation (Java, JavaScript,
PHP, Python, Ruby...)
4 / 101
Introduction
MongoDB
SQL vs MongoDB
Base = Base
Table = Collection
H I ©
UEL
MO
Enregistrement (tuple) = Document
fE L
En BDR, tous les tuples d’une table ont les mêmes champs (mais
h re
les valeurs peuvent être différentes (les valeurs sont affectées à
c
© A
des colonnes)
Dans une collection MongoDB, les documents peuvent ne pas
avoir un champ partagé (pas de colonnes dans un document
MongoDB).
5 / 101
Installation
MongoDB
6 / 101
Installation
MongoDB
7 / 101
Installation
MongoDB
Connexion personnalisée
Ouvrez une console (invite de commandes)
H I ©
EcrLéer n’importe où sur
Créez l’arborescence data/db (on peut la
U
le disque dur)
M-BO
Dans la console, exécutezE
f L
start mongod --port
e
chr cheminDeData/db
numeroPort --dbpath
Cliquez©
A
sur la touche Entrer
Exécutez mongo --port numeroPort
8 / 101
Installation
MongoDB
9 / 101
Particularités de MongoDB
MongoDB
10 / 101
Particularités de MongoDB
MongoDB
Du JSON au BSON
JSON : Binary JSON
MongoDB enregistre toutes nos données, saisies sous format
JSON, dans le format binaire BSON.
11 / 101
Particularités de MongoDB
MongoDB
12 / 101
Gestion de base de données Création
MongoDB
Connexion et création d’une base de données
13 / 101
Gestion de base de données Création
MongoDB
Connexion et création d’une base de données
Remarque
©
Si la base de données n’existe pas, elle sera créée.
13 / 101
Gestion de base de données Création
MongoDB
Connexion et création d’une base de données
Remarque
©
Si la base de données n’existe pas, elle sera créée.
13 / 101
Gestion de base de données Suppression
MongoDB
14 / 101
Gestion de base de données Consultation
MongoDB
15 / 101
Gestion de base de données Consultation
MongoDB
Par défaut
il existe trois bases de données admin, config et local
©
si on ne se connecte pas à une base de données, on utilise par
défaut une base de données appelée test
15 / 101
Gestion de collections Création
MongoDB
Rappel
16 / 101
Gestion de collections Création
MongoDB
Rappel
©
Deux solutions :
Directement : db.createCollection(’adresse’)
En insérant un document : db.personne.insert({nom:
"Wick", prenom: "john"})
16 / 101
Gestion de collections Suppression
MongoDB
17 / 101
Gestion de collections Consultation
MongoDB
18 / 101
Gestion de documents Insertion
MongoDB
Remarque
19 / 101
Gestion de documents Insertion
MongoDB
Remarque
Deux syntaxes :
©
db.nomCollection.insert({clé1: ’val1’, clé2: ’val2’ ... })
19 / 101
Gestion de documents Insertion
MongoDB
Exemple avec insert
db.personne.insert(
{
nom: ’wick’,
prenom: ’john’,
age: 45,
sportif: true
}
)
20 / 101
Gestion de documents Insertion
MongoDB
Exemple avec insert
db.personne.insert(
{
nom: ’wick’,
prenom: ’john’,
age: 45,
sportif: true
}
)
20 / 101
Gestion de documents Insertion
MongoDB
21 / 101
Gestion de documents Insertion
MongoDB
MO
_id: 10,
nom: ’dalton’,
fE L
c h re
prenom: ’jack’,
niveau: ’master’,
} © A
)
22 / 101
Gestion de documents Insertion
MongoDB
save vs insert
save et insert permettent l’insertion et l’insertion multiple.
H I ©
UEL
save ajoute ou modifie un document.
MO
insert ajoute seulement de nouveaux documents.
L
h re fE
save effectue une modification si l’ id spécifié existe dans la
collection. A c
©
insert génère une erreur si l’ id spécifié existe dans la
collection.
23 / 101
Gestion de documents Consultation
MongoDB
24 / 101
Gestion de documents Insertion multiple
MongoDB
25 / 101
Gestion de documents Insertion multiple
MongoDB
Exemple
db.personne.insert(
[
{
nom: ’wick’,
H I ©
UEL
prenom: ’john’,
age: 45,
sportif: true
L MO
},
{
h re fE
c
A nom: ’dalton’,
_id: 12,
© prenom: ’jack’,
niveau: ’master’,
}
]
)
26 / 101
Gestion de documents Modification
MongoDB
La modification
update() : pour modifier un ou plusieurs documents selon une
ou plusieurs conditions.
H I ©
UEL
save() : pour remplacer toutes les valeurs d’un document selon
MO
l’identifiant par les valeurs indiquées dans la méthode. Si
L
l’identifiant n’existe pas il sera ajouté.
fE
c h re
updateOne() : pour modifier uniquement le premier
© A
enregistrement de la sélection (par défaut).
updateMany() : pour modifier plusieurs documents.
replaceOne() : pour remplacer le premier élément de la
sélection.
27 / 101
Gestion de documents Modification
MongoDB
La méthode update
H I ©
UEL
db.nomCollection.update() prend au moins deux paramètres :
MO
le(s) élément(s) concerné(s) par la modification
L
h
les modificationsre fE
A c
©options
quelques
28 / 101
Gestion de documents Modification
MongoDB
Exemple
db.personne.update(
{
_id: 12
},
H I ©
UEL
{
prenom: ’bill’,
)
}
MO
29 / 101
Gestion de documents Modification
MongoDB
Exemple
db.personne.update(
{
_id: 12
},
H I ©
UEL
{
prenom: ’bill’,
)
}
MO
Remarque
29 / 101
Gestion de documents Modification
H I ©
$mul : pour multiplier l’ancienne valeur d’un champ par la valeur spécifiée
UEL
$rename : pour renommer un champ
MO
$min : pour modifier la valeur d’un champ si elle est supérieure à la valeur spécifiée par
min (et inversement pour max)
...
30 / 101
Gestion de documents Modification
H I ©
$mul : pour multiplier l’ancienne valeur d’un champ par la valeur spécifiée
UEL
$rename : pour renommer un champ
MO
$min : pour modifier la valeur d’un champ si elle est supérieure à la valeur spécifiée par
min (et inversement pour max)
...
Syntaxe
db.nomCollectiondb.update(
{clé1: ’val1’ ... },
{$set: {cléN: ’valN’ ... }}
)
30 / 101
Gestion de documents Modification
MongoDB
Exemple
db.personne.update(
{
_id: 12
},
{
$set: {
H I ©
UEL
prenom: ’peter’,
MO
nom: ’white’,
age: 45
}
}
)
31 / 101
Gestion de documents Modification
MongoDB
Exemple
db.personne.update(
{
_id: 12
},
{
$set: {
H I ©
UEL
prenom: ’peter’,
MO
nom: ’white’,
age: 45
}
}
)
Constats
31 / 101
Gestion de documents Modification
MongoDB
Exemple avec save
db.personne.save(
{
_id: 12,
prenom: ’james’,
H I ©
UEL
nom: ’hamilton’,
}
genre: ’h’
MO
)
32 / 101
Gestion de documents Modification
MongoDB
Exemple avec save
db.personne.save(
{
_id: 12,
prenom: ’james’,
H I ©
UEL
nom: ’hamilton’,
}
genre: ’h’
MO
)
Remarque
32 / 101
Gestion de documents Modification
MongoDB
33 / 101
Gestion de documents Modification
MongoDB
Pour modifier tous les documents qui remplissent la condition,
on ajoute le paramètre multi: true
db.personne.update(
{
prenom: ’john’
H I ©
UEL
},
{
L MO
fE
$set: {
c h re
nom: ’abruzzi’
},©
} A
{
multi: true
}
)
34 / 101
Gestion de documents Modification
MongoDB
Ou en utilisant updateMany
db.personne.updateMany(
{
H I ©
UEL
prenom: ’john’
},
{
L MO
$set: {
h re fE
A c
nom: ’abruzzi’
}
© }
35 / 101
Gestion de documents Modification
MongoDB
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’
H I ©
UEL
},
{
L MO
fE
$set: {
c h re
nom: ’segal’
},©
} A
{
upsert: true
}
)
37 / 101
Gestion de documents Modification
MongoDB
Et si on veut supprimer un champ d’un document
38 / 101
Gestion de documents Modification
MongoDB
Et si on veut supprimer un champ d’un document
Explication
f E L
ch r e
On commence par sélectionner les documents dont le champ nom
©A
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 supprimera le champ prenom s’il
existe.
38 / 101
Gestion de documents Modification
MongoDB
39 / 101
Gestion de documents Modification
MongoDB
Explication
f E L
ch r e
On commence par sélectionner les documents dont le champ nom
©A
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émentera de 20 l’age pour s’il
existe. Sinon, le champ age sera créé avec la valeur 20.
39 / 101
Gestion de documents Modification
MongoDB
40 / 101
Gestion de documents Modification
MongoDB
Explication
©
Avec cette requête, on incrémente l’age et on supprime le champ
prenom pour le premier document ayant un champ nom qui a comme
valeur bob
40 / 101
Gestion de documents Modification
MongoDB
41 / 101
Gestion de documents Modification
MongoDB
Explication
©
On commence par sélectionner tous les documents
Pour ces documents, le champ nom sera renommé name
41 / 101
Gestion de documents Modification
MongoDB
Supprimer un document
db.personne.remove({nom: "bob"})
42 / 101
Gestion de documents Modification
MongoDB
Supprimer un document
db.personne.remove({nom: "bob"})
Explication
42 / 101
Gestion de documents Modification
MongoDB
43 / 101
Gestion de documents Modification
MongoDB
44 / 101
Gestion de documents Modification
MongoDB
44 / 101
Gestion de documents Modification
MongoDB
44 / 101
Gestion de documents Modification
MongoDB
45 / 101
Gestion de documents Modification
MongoDB
45 / 101
Gestion de documents Modification
MongoDB
46 / 101
Gestion de documents Modification
MongoDB
46 / 101
Gestion de documents Modification
MongoDB
46 / 101
Gestion de documents Modification
MongoDB
46 / 101
Gestion de documents Modification
MongoDB
47 / 101
Gestion de documents Modification
MongoDB
db.personne.find({},{nom:1})
f E L
ça affiche le nom de toutes les personnes ainsi que leurs
ch r e
identifiants (qui sera affiché automatiquement)
A
47 / 101
Gestion de documents Modification
MongoDB
db.personne.find({},{nom:1})
f E L
ça affiche le nom de toutes les personnes ainsi que leurs
ch r e
identifiants (qui sera affiché automatiquement)
A
Et si on ne veut pas afficher les id
db.personne.find({},{nom:1, id: 0 })
47 / 101
Gestion de documents Modification
MongoDB
48 / 101
Gestion de documents Modification
MongoDB
Explication
48 / 101
Gestion de documents Modification
MongoDB
db.personne.find({name:/∧w/})
49 / 101
Gestion de documents Modification
MongoDB
db.personne.find({name:/∧w/})
Explication
49 / 101
Gestion de documents Modification
MongoDB
db.personne.find({name:/k$/})
db.personne.find({name:/∧[eh]/})
db.personne.find({name:/∧[e-w]/})
50 / 101
Gestion de documents Modification
MongoDB
H I ©
UEL
x+ : pour indiquer que la lettre x est obligatoire. Elle peut y être 1
ou plusieurs fois.
L MO
h re
1 ou plusieurs fois. fE
x* : pour indiquer que la lettre x est facultative. Elle peut y être 0,
x{2,4}©
A c
: pour indiquer que la lettre x doit se répéter au moins
deux fois et au plus 4 fois.
. : un caractère quelconque
| : le ou logique
51 / 101
Gestion de documents Modification
MongoDB
52 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Listes des opérations
$push : pour ajouter un élément au tableau
$pop : pour supprimer le premier ou le dernier élément d’un
tableau
H I ©
UEL
$pull : pour supprimer une ou plusieurs valeurs d’un tableau
MO
$pullAll : pour supprimer tous les éléments d’un tableau
L
$position : à utiliser
r e f E push pour indiquer la position
avec
A
d’insertion dans h tableau
cun
$slice© : à utiliser avec push pour préciser les éléments à garder
dans un tableau
$sort : à utiliser avec push pour ordonner les éléments d’un
tableau
...
53 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
54 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
f E L
Comment ajouter plusieurs sports avec une seule requête ? Ainsi :
c e
hr { id: 5
db.personne.update( }, { $push: { sport:
© A
[’hockey’,’sky’] } } )
55 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
55 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Ou comme-ça ?
db.personne.update( { id: 5 }, { $push: { sport:
{’hockey’,’sky’} } } )
56 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Ou comme-ça ?
db.personne.update( { id: 5 }, { $push: { sport:
{’hockey’,’sky’} } } )
56 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Solution
db.personne.update( { id: 5 }, { $push: {
"sport": { $each: [’basket’,’sky’] } } } )
Remarque
©
$push : ajoute naturellement l’élément après le dernier élément
du tableau
57 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Explication
©
Ceci rajoute l’élément volley à la position 2 du tableau sport
(la première position est d’indice 0)
Les autres éléments seront décalés
58 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
59 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
60 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
61 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Si on exécute
db.personne.update(
{ _id: 6 },
H I ©
{$push: {
UEL
sport: {
L MO
h
$slice: -5 re fE
$each: [ ’hockey’, ’sky’, ’volley’ ],
} A c
} ©
})
62 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Ensuite
db.personne.find({_id:6}).pretty();
Le résultat sera :
H I ©
UEL
{
"_id" : 6,
"nom" : "wick",
L MO
"sport" : [
h re fE
"hand",
A c
©
"tennis",
"hockey",
"sky",
"volley"
]
}
63 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
MO
_id : 7,
nom : ’wick’,
fE L
c h re
sport : [ ’foot’, ’hand’, ’tennis’]
})
© A
64 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Si on exécute
db.personne.update(
{ _id: 7 },
H I ©
{$push: {
UEL
sport: {
L MO
$slice: 5
h re fE
$each: [ ’hockey’, ’sky’, ’volley’ ],
} A c
} ©
})
65 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Ensuite
db.personne.find({_id:7}).pretty();
Le résultat sera :
H I ©
UEL
{
"_id" : 7,
"nom" : "wick",
L MO
"sport" : [
h re fE
"foot",
A c
©
"hand",
"tennis",
"hockey",
"sky"
]
}
66 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
MO
_id : 8,
nom : ’wick’,
fE L
c h re
sport : [’hand’, ’foot’, ’tennis’]
})
© A
67 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Si on exécute
db.personne.update(
{ _id: 8 },
H I ©
{$push: {
UEL
sport: {
L MO
$sort: 1
h re fE
$each: [’sky’, ’volley’ , ’hockey’],
} A c
} ©
})
68 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Ensuite
db.personne.find({_id:8}).pretty();
Le résultat sera :
{ H I ©
"_id" : 8,
UEL
"nom" : "wick",
L MO
"sport" : [
h re fE
"foot",
A c
©
"hand",
"hockey",
"tennis",
"sky",
"volley"
]
}
69 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
70 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
})
71 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
72 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Et pour supprimer ?
db.personne.update(
H I ©
UEL
{ _id: 10 },
{ $pull:
{ notes :
L MO
re fE
{’compilation’: 15, ’coefficient’: 1}
h
}
A c
)
} ©
73 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
A c
{’OS’: 10, ’coefficient’: 2}
] ©
})
74 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
75 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
75 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Comment faire pour éviter cette problématique ?
db.personne.update(
{ _id: 11 },
{ $pull: {
H I ©
UEL
notes : {
$elemMatch:
MO
{’programmation’: 17, ’coefficient’:
L
4}
h re fE
}
A c
} )
} ©
76 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Comment faire pour éviter cette problématique ?
db.personne.update(
{ _id: 11 },
{ $pull: {
H I ©
UEL
notes : {
$elemMatch:
MO
{’programmation’: 17, ’coefficient’:
L
4}
h re fE
}
A c
} )
} ©
MongoDB
Pour chercher un document selon une valeur dans son tableau d’objet
db.personne.find(
H I ©
UEL
{"notes.programmation":
{$ne:17}
)
} MO
77 / 101
Gestion de documents Opérations sur les tableaux d’un document
MongoDB
Pour chercher un document selon une valeur dans son tableau d’objet
db.personne.find(
H I ©
UEL
{"notes.programmation":
{$ne:17}
)
} MO
77 / 101
Opérateurs logiques et de comparaison
MongoDB
opérateurs de comparaison
opérateurs logiques
f E L
... ch r e
A
78 / 101
Opérateurs logiques et de comparaison Opérateurs de comparaison
MongoDB
H I ©
UEL
{"_id" : 1, "nom" : "wick", "notes": [10, 15, 12], "age" : 19 }
L MO
{"_id" : 2, "nom" : "bob", "notes": [18, 8, 12], "age" : 35 }
h re fE
c
{"_id" : 3, "nom" : "wolf", "notes": [7, 6, 13], "age" : 25 }
A
©
{"_id" : 4, "nom" : "green", "notes": [18, 16, 9], "age" : 22 }
79 / 101
Opérateurs logiques et de comparaison Opérateurs de comparaison
MongoDB
80 / 101
Opérateurs logiques et de comparaison Opérateurs de comparaison
MongoDB
f E L
ch r e
{"_id" : 2, "nom" : "bob", "notes": [18, 8, 12], "age" : 35 }
©A
{"_id" : 3, "nom" : "wolf", "notes": [7, 6, 13], "age" : 25 }
80 / 101
Opérateurs logiques et de comparaison Opérateurs de comparaison
MongoDB
c h re
$eq : equal (égal à)
© A
$ne : not equal (différent de )
$in : dans (un tableau...)
$nin : not in (pas dans)
81 / 101
Opérateurs logiques et de comparaison Opérateurs logiques
MongoDB
Comment sélectionner les étudiants dont l’age est entre 30 et 40 ans
db.etudiant.find(
{$and:
[
{ age:{$gte:20}}, H I ©
{ age:{$lte:30}}
UEL
]
L MO
}
h re fE
)
A c
©
82 / 101
Opérateurs logiques et de comparaison Opérateurs logiques
MongoDB
Comment sélectionner les étudiants dont l’age est entre 30 et 40 ans
db.etudiant.find(
{$and:
[
{ age:{$gte:20}}, H I ©
{ age:{$lte:30}}
UEL
]
L MO
}
h re fE
)
A c
©
{"_id" : 1, "nom" : "wick", "notes": [10, 15, 12], "age" : 19 }
MongoDB
83 / 101
Opérateurs logiques et de comparaison Autres opérateurs
MongoDB
Afficher les personnes dont le champ name existe
db.personne.find(
{name:
{$exists:true}
H I ©
UEL
}
)
MO
84 / 101
Opérateurs logiques et de comparaison Autres opérateurs
MongoDB
Afficher les personnes dont le champ name existe
db.personne.find(
{name:
{$exists:true}
H I ©
UEL
}
)
MO
Afficher les personnes dont l’age est divisible par 5
©
db.etudiant.find(
{ age:
{ $mod: [ 5, 0 ] }
}
)
84 / 101
Index
MongoDB
H I ©
UEL
Si on a un champ (autre que id) selon lequel on effectue des
recherches très fréquemment
L MO
h re fE
Pour accélérer la recherche, on peut créer un index sur ce champ
A c
Par défaut, on a un index sur chaque id d’une collection (et il est
©
impossible de le supprimer)
85 / 101
Index
MongoDB
A c },
© "name" : "_id_",
"ns" : "test.personne"
}
]
86 / 101
Index
MongoDB
87 / 101
Index
MongoDB
On peut consulter une nouvelle fois la liste d’index
db.personne.getIndexes(); ça affiche :
[
{
"v" : 2,
"key" : {
H I ©
"_id" : 1
UEL
MO
},
L
"name" : "_id_",
fE
re
"ns" : "test.personne"
},
{ A c h
© "v" : 2,
"key" : {
"nom" : 1
},
"name" : "nom_1",
"ns" : "test.personne"
}
]
88 / 101
Index
MongoDB
Pour supprimer un index sur le champ nom
db.personne.dropIndex(nom:1)
On vérifie
db.personne.getIndexes(); ça affiche :
H I ©
[
UEL
{
L MO
h re fE
"v" : 2,
"key" : {
A c "_id" : 1
© },
"name" : "_id_",
"ns" : "test.personne"
}
]
89 / 101
Agrégations
MongoDB
90 / 101
Agrégations
MongoDB
Exemple
db.etudiant.aggregate(
[
{$project:
{
_id: "$nom",
H I ©
UEL
moyenne: {$avg: "$notes"}
}
}
MO
]);
91 / 101
Agrégations
MongoDB
Exemple
db.etudiant.aggregate(
[
{$project:
{
_id: "$nom",
H I ©
UEL
moyenne: {$avg: "$notes"}
}
L MO
fE
}
]);
c h re
Le résultat © A
{ "_id" : "wick", "moyenne" : 12.333333333333334 }
{ "_id" : "bob", "moyenne" : 12.666666666666666 }
{ "_id" : "wolf", "moyenne" : 8.666666666666666 }
{ "_id" : "green", "moyenne" : 14.333333333333334 }
91 / 101
Agrégations
MongoDB
Explication
92 / 101
Agrégations
MongoDB
Autres pipelines d’agrégation
$group : Permet de regrouper des documents comme un group
by en SQL
I ©
$out : Permet de créer une nouvelle collection à partir d’une
H
UEL
autre qui existe déjà
MO
$unwind : Permet de décomposer un tableau en autant de
L
h re fE
documents que d’élément.
A c
$match : Permet de filtrer les documents selon la condition
©
spécifiée
$sample : Permet de sélectionner aléatoirement un nombre de
documents spécifiée dans la requête
...
93 / 101
Agrégations
MongoDB
A ch$size...
$split, $slice,
©
$substr, $toUpper, $toLower, $concat
...
94 / 101
Agrégations
MongoDB
95 / 101
Agrégations
MongoDB
95 / 101
Agrégations
MongoDB
Exemple avec unwind
db.etudiant.aggregate(
[
{ $unwind : "$notes" }
]);
96 / 101
Agrégations
MongoDB
Exemple avec unwind
db.etudiant.aggregate(
[
{ $unwind : "$notes" }
]);
H I ©
UEL
Le résultat
{ "_id" : 1, "nom" :
MO
"wick", "notes" : 10, "age" : 19 }
L
fE
{ "_id" : 1, "nom" : "wick", "notes" : 15, "age" : 19 }
{
{
"_id"
"_id"
:
:
1,
2,
"nom"
"nom"
c
:
h
: re"wick", "notes" : 12, "age" : 19 }
"bob", "notes" : 18, "age" : 25 }
{
{
"_id"
"_id"
:
:
2,
2, © A
"nom"
"nom"
:
:
"bob", "notes" : 8, "age" : 25 }
"bob", "notes" : 12, "age" : 25 }
{ "_id" : 3, "nom" : "wolf", "notes" : 7, "age" : 35 }
{ "_id" : 3, "nom" : "wolf", "notes" : 6, "age" : 35 }
{ "_id" : 3, "nom" : "wolf", "notes" : 13, "age" : 35 }
{ "_id" : 4, "nom" : "green", "notes" : 18, "age" : 22 }
{ "_id" : 4, "nom" : "green", "notes" : 16, "age" : 22 }
{ "_id" : 4, "nom" : "green", "notes" : 9, "age" : 22 }
96 / 101
Agrégations
MongoDB
Exemple avec out
db.etudiant.aggregate(
[
{$project:
H I ©
EL
{
U
_id: "$nom",
O {$avg: "$notes"}
M
moyenne:
L
}
r e f E
Ach
},
]);
©
{ $out : "moyennes" }
97 / 101
Agrégations
MongoDB
Exemple avec out
db.etudiant.aggregate(
[
{$project:
H I ©
EL
{
U
_id: "$nom",
O {$avg: "$notes"}
M
moyenne:
L
}
r e f E
Ach
},
]);
©
{ $out : "moyennes" }
MongoDB
98 / 101
Agrégations
MongoDB
Exemple avec group
db.books.aggregate(
[
{ $group :
H I ©
UEL
{ _id : "$author", books: { $push: "$title"
} }
]);
} MO
99 / 101
Agrégations
MongoDB
Exemple avec group
db.books.aggregate(
[
{ $group :
H I ©
UEL
{ _id : "$author", books: { $push: "$title"
} }
]);
} MO
Le résultat :
{"_id": "Homer", "books": ["The Odyssey", "Iliad"]}
{"_id": "Dante", "books": ["The Banquet","Divine
Comedy","Eclogues"]}
99 / 101
Agrégations
MongoDB
Exemple avec match
db.books.aggregate(
[
{ $match :
{ author : "Dante" }
H I ©
UEL
}
MO
]);
100 / 101
Agrégations
MongoDB
Exemple avec match
db.books.aggregate(
[
{ $match :
{ author : "Dante" }
H I ©
UEL
}
MO
]);
fE L
Le résultat :
c h re
{ "_id" :© A "title" : "The Banquet", "author" :
8751,
"Dante", "copies" : 2 }
{ "_id" : 8752, "title" : "Divine Comedy", "author"
: "Dante", "copies" : 1 }
{ "_id" : 8645, "title" : "Eclogues", "author" : "
Dante", "copies" : 2 }
100 / 101
Agrégations
MongoDB
Documentation officielle
https://docs.mongodb.com/
101 / 101