MongoDB
Adel KHALFALLAH
Institut Sup rieur dInformatique
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
D finition des donn es
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Documents
" Un document est un ensemble ordonn de cl s/valeur
{Nom : "Ali", Age : 26}
" Les valeurs prennent lun des types de BSON parmi lesquels:
Double/Decimal128/32-bits integer/64-bits integer
String/Date/Boolean/Timestamp/Regular expression
ObjectID, La valeur Null
Array/Documents
" Les cl s avec des casses ou des types diff rents sont diff rentes
{Age : 26} # {Age : "26"} et {Age : 26} # {age : 26}
" Les cl s ne doivent pas tre dupliqu es
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Documents
" Les tableaux sont de types h t rog ne
{ description: ["homme", 46, 1.72]}
" Les documents sont imbriqu s
{identite : {nom : "baligh", prenom: "hamdi"}}
" Lacc s une valeur dun tableau ou une cl dun
document int gr utilise la notation point:
description.2 46
identite.nom "baligh"
" Chaque document dispose dune identification unique : Le
champ _id g n r implicitement, il peut tre d fini
explicitement
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Documents
Publicité
" ObjectId est le type par d faut de _Id, il est con u pour
tre facile g n rer dans un environnement distribu
" 12 Octets : 0 3 timestamp local (secondes), 4 6
identification de la machine, 7 8 identification du
processus, les octets 0 8 garantissent une valeur
unique par machine/processus toutes les secondes, 9
11 permettent davoir 224 valeurs diff rentes par
seconde/process/machine
" Pour g n rer un ObjectId qui permet didentifier un
document dans un contexte distribu , les diff rentes
machines nont pas besoin de se synchroniser
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Collections
" Une collection est un ensemble de documents, elle est
d finie par un nom
" Une collection na pas de sch ma : elle peut contenir des
documents avec des formats diff rents, toutefois les
validators permettent dimposer des contraintes sur le
type, les valeurs, lexistence, etc.
" La base de donn es accueille plusieurs collections
Relationnel
Base de donn es
Table
Ligne
MongoDB
Base de donn es
Collection
Document
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Create Read Update Delete (CRUD) Documents
" Cr er un seul document
db.stock.insertOne(
Publicité
{ article: "nappe", qte: 100, label: ["coton"], taille: {
long: 150, larg: 60} }
)
Retourne le document
{
"acknowledged" : true,
"insertedId" : ObjectId("56fc40f9d735c28df206d078")
}
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Create Read Update Delete (CRUD) Documents
"
Insertion de plusieurs documents
db.stock.insertMany ([
{ article: "nappe", qte: 100, label: ["coton"], taille: {
long: 150, larg: 60} },
{ article: "serviette", qte: 45, label: ["blanc", "beige" ],
taille: { long: 30, larg: 20} },
{ article: "mouchoir", qte: 30, label: ["synth tique"],
taille: { long: 20, larg: 20} }
])
" Un document contenant les diff rents Ids est retourn
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Create Read Update Delete (CRUD) Documents
" La m thode find permet de retrouver des documents
db.collection.find(requ te, projection)
requ te et projection sont des documents
"
" projection est de la forme: {cl : choix,&,cl Tab: choix}
il
permet dexpliciter les cl s ou les l ments de tableau qui
seront retourn es. Choix est soit
Un bool en ou 0,1 il permet de sp cifier linclusion ou lexclusion
de la cl correspondante
Soit une s lection d l ments de tableau: $ d signe le premier
Publicité
l ment dun tableau, $elemMatch permet de sp cifier une
condition sur les l ments dun tableau, $slice permet de
sp cifier le nombre d l ments dun tableau
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Create Read Update Delete (CRUD) Documents
db.collection.find(requ te, projection)
" La requ te prend plusieurs formes:
{Cl : filtre} o filtre est un document construit gr ce aux
op rateurs bool ens logiques : $and, $or,& et de comparaison:
$lt, $eq, $gt, &
{Cl Tab : filtre} o Cl Tab est de type tableau et filtre reprend les
op rateurs pr c dents auxquels sajoutent les op rateurs
$elemMatch, $size,& et il est aussi possible dutiliser la notation
point (tableau.index) pour manipuler un l ment du tableau
{Cl Doc : filtre} o Cl Doc est un document imbriqu et filtre est
un document simple ou construit gr ce aux op rateurs pr c dents
pour manipuler des documents imbriqu s
{Cl Doc.Cl : filtre} dans le cas de documents imbriqu s la
notation point permet de manipuler les cl s internes
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Create Read Update Delete (CRUD) Documents
" Mettre jour un seul document:
db.collection.updateOne(filtre,update[,params optionnels])
" Filtre est similaire celui de find, il permet de sp cifier le
document qui sera mis jour
" Update sp cifie la mis jour, il peut tre:
Un op rateur de mise jour: $set, $unset, $mul, $rename,&
Un pipeline de mise jour, qui se d roule en 3 tapes: lajout de
cl s $set, la suppression de cl s $unset et la mise jour de
valeurs
" Mettre jour plusieurs documents
db.collection.updateMany(filtre,update[,params optionnels])
Identique updateOne, sauf que le filtre permet de retrouver plusieurs
documents
Publicité
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Create Read Update Delete (CRUD) Documents
" Modifier les valeurs dun document:
db.collection.replaceOne(filter, remplDoc[,params optionnels])
" Le premier document sp cifi par le filtre sera remplac par le
document remplDoc
" Le document de remplacement remplDoc ne peut pas contenir
dop rateurs de mise jour, il nest donc pas possible de modifier la
structure du document s lectionn
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Create Read Update Delete (CRUD) Documents
" Suppression dun seul document:
db.collection.deleteOne(filtre[,params optionnels])
" Le filtre sp cifie le document qui sera supprim
" Suppression de plusieurs documents
db.collection.deleteMany(filtre[,params optionnels])
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1
Traitement par lot
" Les op rations CRUD peuvent tre ex cut s par lot
db.collection.bulkWrite([ op1, op2, ... ] [,params optionnels])
" Op1, op2, & sont lune des op rations CRUD vues
pr c demment
" Elles sont ex cut es dans lordre, si lune delle choue le
traitement sarr te
"
Il est possible de pr ciser que lex cution nest pas
s quentielle, le syst me peut alors r ordonner les
op rations et les ex cuter en parall le, l chec dune
op ration narr te pas lensemble
Adel KHALFALLAH - G nie logiciel - Bases de donn es NoSQL - Institut Sup rieur dInformatique - 1