Mongo DB
Mongo DB
Mongo DB
Développé en C++
disponibilité de plusieurs fonctionnalités SQL (count, group by, order by, sum, avg...)
RDBMS MongoDB
Database Database
Table Collection
Tuple/Row Document
column Field
Table Join Embedded Documents
Primary Key Primary Key (Default key _id provided by
mongodb itself)
En BDR, tous les tuples d’une table ont les mêmes champs (mais les valeurs peuvent
être différentes
Dans une collection MongoDB, les documents peuvent ne pas avoir aucun champ en commun.
MongoDB : Base de données
Documentaire
Exemple
Id_etud Nom_etud Prenom_etud
TABLE : ETUDIANT
Collection Colonne Valeur
ETUDIANT Id_etudiant 1
ETUDIANT Nom_Etud Hammouda Document
ETUDIANT Prenom_Etud Mohamed
ETUDIANT Id_etudiant 2 MongoDB enregistre toutes nos
ETUDIANT Nom_Etud Chebbi donnees, saisies sous format
JSON, dans le format binaire
ETUDIANT Prenom_Etud Ikram
BSON
CLLECTION : ETUDIANT
MongoDB : Base de données
Documentaire
Règles de passage du modèle relationnel au modèle
documentaire
Number
Boolean
String
Array
Object
Null
MongoDB : Base de données
Documentaire
Installation de MongoDB : server
MongoDB : Base de données
Documentaire
Installation de MongoDB : server
MongoDB : Base de données
Documentaire
Requêtes avec MongoDB :DataBase & Collections
Si la base de données n'est pas dans /data/db on doit spécifier le
chemin avec –dbpath
mongod --dbpath db/
afficher toutes les base de données
show dbs
Par défaut
utiliser la base "madatabase"
use madatabase il existe deux bases de données
voir dans quelle base on est admin et local
db
si on ne se connecte pas à une base
afficher les collections de données, on travaille dans une
show collections base de données appelée test
MongoDB : Base de données
Documentaire
Requêtes avec MongoDB : DataBase & Collections
effacer la base dans laquelle on est
db.dropDatabase()
Insertion : Création d’une collection
db.Film.insert({ Titre: 'Quentin', annee : 'Busuttil' })
renommer une collection
db.oldname.renameCollection("newname")
effacer une collection
db.contacts.drop()
MongoDB : Base de données
Documentaire
Requêtes avec MongoDB : Sélections
Parcourir toute une collection
db.Film.find ()
Trier un document
db.Film.find ().sort({"title": 1})
Savoir combien de documents comprend le résultat?
db.Film.count ()
Les options skip et limit permettent de “paginer” le
résultat. La requête suivante affiche 12 documents à
partir du dixième inclus.
db.Film.find ().skip(9).limit(12)
MongoDB : Base de données
Documentaire
Chaque document possède un _id attribué par l’utilisateur ou
par MongoDB (ObjectId). Le champ id constitue l’index de la
collection.
Ajout d’un document
Deux syntaxes :
db.personne.find({name:/k$/
})
MongoDB : Base de données
Documentaire
Requêtes avec MongoDB : Sélections : Projection
Projection d’une colonne
db.movies.find( {"year": { $gte: "2000", $lte: "2005" } }, {"title": 1} )
Projection de toutes les colonnes à l’exception de
celles spécifier dans la requête
db.movies.find ({« Titre": « film1"}, {« annee": null, « realisateur":
0})
Verifiez cette requête
db.movies.find ({« Titre": « film1"}, {« annee": null, « realisateur":
1})
MongoDB : Base de données
Documentaire
Requêtes avec MongoDB : Opérateurs ensemblistes&booléens
Opérateur in
db.film.find({“titire": {$in: [“film1", "artist:98"]}})
Opérateur all
db.film.find({“titire": {$in: [“film1", "artist:98"]}})
Opérateur nin
db.film.find({“titire": {$nin: [“film1", "artist:98"]}})
Trouver des documents qui n’ont pas un attribut donné
db.film.find({"sommaire": {$exists: false}})
Agréger des conditions
db.film.find({$or : [{"sommaire": ‘blabla’},{titre: “film1"})
MongoDB : Base de données
Documentaire
Requêtes avec MongoDB : Jointures
La jointure, n’existe pas en MongoDB. C’est une
limitation très importante du point de vue de la
gestion de données. Incohérente avec une approche
documentaire dans laquelle les documents sont
supposés indépendants les uns des autres, avec une
description interne suffisamment riche pour que toute
recherche porte sur le contenu du document lui-même.
Parcontre ceci peut être effectué coté client (java,
nodeJs,c#…)
MongoDB : Base de données
Documentaire
Requêtes avec MongoDB : Manipulation des
données
Quelle commande pour faire la modification ?
db.nomCollection.update() prend au moins deux paramètres :
élément(s) concernés par la modification, le type de modification
Il existe d’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
replaceOne() : pour remplacer le premier élément de
la sélection
MongoDB
MongoDB
: Base de données
Documentaire
Qu’est ce qu’on peut faire comme modification ?
Exemple
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é 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.
32 / 97
MongoDB : Base de données Documentaire
Exemple
db.personne.update({nom: "bob"},
{$set:{ville:’Marseille’}, {multi:true}})
Explication
On commence par sélectionner les documents dont le champ nom
contient comme valeur bob
Avec {multi:true}, tous les documents de la collection
personne dont le champ nom a la valeur bob seront concernés
par la modification (c’est l’équivalent de updateMany)
Pour ces documents, on affectera la valeur Marseille pour le
champ ville s’il existe. Sinon, le champ ville sera créé avec
32 / 97
MongoDB : Base de données Documentaire
32 / 97
MongoDB : Base de données Documentaire
32 / 97
MongoDB : Base de données Documentaire
Supprimer un document
db.personne.remove({nom: "bob"})
Explication
On commence par sélectionner les documents dont le champ nom
contient comme valeur bob
Ensuite tous ces documents seront supprimés
32 / 97
Application
32 / 97
Application
32 / 97
Application
32 / 97
Application
32 / 97
Application
Et pour supprimer ?
db.personne.update(
{ _id: 10 },
{ $pull:
{ notes :
{’compilation’: 15, ’coefficient’: 1}
}
}
)
Pour chercher un document selon une valeur dans son tableau d’objet
db.personne.find(
{"notes.programmation":
{$ne:17}
}
) Cela permet de chercher toutes les
personnes dont la note en programmation
est différente de 17. 32 / 97
Application
On considère la collection suivante (étudiant):
32 / 97
Les index