SlideShare une entreprise Scribd logo
CRUD
Mme Ines Slimene
Ines_slimene@yahoo.fr
Plan
MongoDB Shell
Type de données
Insertion
Lecture
Mise à jour
Suppression
GridFS
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 2
Mongo Shell
Le meilleur moyen d'interroger MongoDB est d'utiliser le shell.
Toute l'administration de MongoDB se fait grâce au shell.
Le shell MongoDB est très simple à utiliser.
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 3
Mongo Shell
Démarrage : mongod
Connexion : mongo
Arrêter la base MongoDB : Utiliser la commande shutdown
> use admin //connection a la base admin
> db.shutdownServer(); //arrêter le serveur
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 4
Mongo Shell
Afficher la base de données courante : db
Afficher la liste des bases de données : show dbs
Sélectionner une base de données : use <name>
Afficher les collections : show collections
Supprimer une base de données : db.runCommand({dropDatabase: 1})
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 5
Type de données
Type Exemple
Int/double/.. {a:1}
boolean {b:true}
String {c:’hello’}
Array {d:[1,2,3]}
Date {e:ISODate(« 2012-12-19 »)}
Object {g:{a:1,b:true}}
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 6
Mongo Shell
Les commandes ont la syntaxe suivante :
db.<collection>.<methode>
Exemple :
◦ db.inventory.find( { qty: { $gt: 20 } } )
◦ db.val.insert({name: "Olivier", etude : "Master"})
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 7
CRUD
Create
◦ db.collection.insert( <document> )
◦ db.collection.update( <query>, <update>, { upsert: true } )
Read
◦ db.collection.find( <query>, <projection> )
◦ db.collection.findOne( <query>, <projection> )
Update
◦ db.collection.update( <query>, <update>, <options> )
Delete
◦ db.collection.remove( <query>, <justOne> )
8https://inesslimene.wixsite.com/moncours MONGODB-CRUD
Insertion
on voit un champ de nom _id et de type ObjectId a été inséré.
◦ Tout document doit avoir un identifiant unique dans la collection,
◦ Si l'on ne le précise pas, MongoDB se charge de le créer à notre place.
◦ Cet identifiant ne peut pas être modifié et constitue la clé primaire de la collection.
On peut préciser le type d’un champ en utilisant :
db.people.insert({nom:"smith",age:NumberInt(12)})
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 9
Insertion : Garantie de l’écriture
Suite a une insertion ou mise a jours nous n’avons pas un accusée de réception de la
modification
Pour voir le résultat de la requête on utilise :
◦ getLastError
Application : exécution de la requête en mode « safe »
Dans une application, la commande getLastError a deux paramètres:
◦ w : attendre un accusé de réception d’écriture, mais dans la mémoire et non pas l’écriture sur le disque.
(valeur : 0, 1, N, majority) N:accuseé de réception pour N nœuds
◦ j : écrire dans un fichier de journalisation suite a l’écriture en mémoire.(valeur : 0, 1) (garantie la
validation du journal du master uniquement)
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 10
Différents types de requêtes
la commande findOne() renvoi au plus un document. Sans argument, elle retourne un document
quelconque de la collection
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 11
Différents types de requêtes
La commande find peut prendre deux paramètres:
Le premier est un document qui constitue le critère de recherche. Le document retourné sera
identique au document spécifié (sur les champs fournis bien sûr). Cette première partie
correspond donc à la clause WHERE de SQL.
Le second est un document qui permet de restreindre les champs du document retourné, à la
manière de la clause SELECT de SQL. En son absence, tous les champs sont retournés. On note
aussi que l'identifiant est toujours retourné, à moins que l'on dise explicitement le contraire.
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 12
Lecture : Utilisation d'opérateurs
Opérateur Signification Exemple
$gt, $gte, $lt, $lte >, >=, <, <=
score: { $gt: 95, $lte:
98 }
$exists
test sur l'existence
d'un champ
profession: { $exists:
true }
$type
test sur le type d'un
champ
name: { $type: 2 }
$regex
recherche de
pattern dans une
chaine
name: { $regex: "e$"
}
$or
OU logique sur les
clauses fournies
dans le tableau
$or: [ { name: {
$regex: "e$"} }, age:
{ $exists: true} ]
$and
ET logique sur les
clauses fournies
dans le tableau
$and: [ { name: {
$regex: "e$"} }, age:
{ $exists: true} ]
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 13
Lecture : Utilisation d'opérateurs
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 14
db.people.find() Select * from people
db.people.find({"age" : 27}) Select * from people where age=27
db.people.find({}, {“nom" : 1,
“age" : 1})
Select nom,age from people
db.people.find({}, {“nom" : 0}) Select age,profession from people
db.people.find({"age" :
{"$gte" : 18, "$lte" : 30}})
Select * from people where age between 18
and 30
db.raffle.find({"ticket_no" :
{"$in" : [725, 542, 390]}})
Select * from raffle where ticket_no in
(725,542,390)
Lecture : Utilisation d'opérateurs
Si l'on donne plusieurs conditions pour le même champ, c'est la dernière qui va gagner car le
shell va construire un premier objet correspondant à la première condition, puis écraser cet
objet quand il va lire la seconde condition.
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 15
Lecture : Utilisation d'opérateurs
Afficher les collections qui contiennent le champ age
db.people.find({age:{$exists:true}})
Afficher les collections dont le type du champ nom est String
db.people.find({nom:{$type:2}})
Nom qui contient la lettre i : db.people.find({nom:{$regex:"i"}})
Nom qui se termine par h :db.people.find({nom:{$regex:"h$"}})
Nom qui commence par : db.people.find({nom:{$regex:"^s"}})
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 16
Lecture : Utilisation d'opérateurs
Operateur OR :
db.people.find({$or:[{name:{$regex:"e$"}},{age:{$exists:true}}]})
Operateur AND :
db.people.find({$and:[{name:{$regex:"e$"}},{age:{$exists:true}}]})
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 17
Lecture : Utilisation d'opérateurs
Afficher les utilisateurs dont le nom est Smith ou Bob
db.users.find( { nom : { $in : [ "smith" , "Bob" ] }})
Afficher les utilisateurs dont leurs préférences sont running et pickles.
db.users.find({favorites:{$all:["running","pickles"] }})
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 18
Lecture : Utilisation d'opérateurs
limit(): pour récupérer les n premiers résultats uniquement
sort(): pour trier les résultats
count(): retourne le nombre de documents satisfaisant la requête.
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 19
Requêtes et sous-documents
Sous document spécifique
Afficher l’article dont le nom de l’auteur est Wursteisen :
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 20
Mettre à jour les documents
La méthode update() de MongoDB possède quatre variantes:
◦ La première permet la mise à jour globale des documents
◦ La seconde variante permet une mise à jour sélective des champs. On utilise pour cela
de nouveaux opérateurs. Le premier et probablement le plus utile est l'opérateur $set:
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 21
Mettre à jour les documents
◦ On peut aussi utiliser l'opérateur $inc sur les champs entiers:
◦ L'opérateur suivant, $unset, permet de supprimer un champ d'un document:
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 22
Mises à jour de plusieurs documents
Les requêtes de mise à jour ne touchent qu'un seul document.
Si on souhaite mettre à jour plusieurs documents, il faut passer un troisième argument à la
méthode update()
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 23
Mettre à jour un champ de type tableau
Création champ de type tableau:
modifier la deuxième valeur du tableau "activité" pour lui attribuer la valeur
"camping".
Ajouter une valeur au tableau des activités ($push)
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 24
Mettre à jour un champ de type tableau
L'opérateur $pop permet de retirer une valeur du tableau.
◦ Si la valeur passée à l'opérateur est 1, ce sera la dernière valeur qui sera supprimée,
◦ si c'est -1 ce sera la première valeur.
Pour spécifier l’élément a retirer ($pull)
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 25
Suppression de documents
Delete :
db.people.remove({})
Drop collection :
db.article.drop()
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 26
GridFS
GridFS est une spécification MongoDB qui permet le stockage et la lecture des fichiers a grande
taille comme les images, les fichiers audio et vidéo, etc.
C’est une sorte de système de fichier. Mais le stockage se fait dans des collections MongoDB.
GridFS offre la possibilité de stocker des fichiers même si leurs tailles sont supérieures a 16M.
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 27
GridFS
GridFS divise un fichier en morceaux (chunks) et enregistre chaque morceaux de données dans
un document, chacun de taille max 255k.
GridFS utilise par défaut deux collections fs.files et fs.chunks pour enregistrer les métadonnées
des fichiers et les morceaux.
Chaque morceau est identifié par un unique _id.
le fs.files présente le document père. Le champ files_id dans le document fs.chunks relie les
morceaux a leur père.
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 28
GridFS
Insérer la sequence audio song.mp3 dans mongoDB
◦ $ mongofiles -d gridfs put song.mp3
gridfs est le nom de la base dans laquelle le fichier serait inséré.
$ mongo gridfs
> db.fs.files.find()
> db.fs.chunks.count({files_id:ObjectId('5458ea27cd2a7c2f3fbaf181')})
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 29
Structure en arbre
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 30
Structure en arbre
db.categories.insert( { _id: "MongoDB", children: [] } )
db.categories.insert( { _id: "dbm", children: [] } )
db.categories.insert( { _id: "Databases", children: [ "MongoDB", "dbm" ] } )
db.categories.insert( { _id: "Languages", children: [] } )
db.categories.insert( { _id: "Programming", children: [ "Databases", "Languages" ] } )
db.categories.insert( { _id: "Books", children: [ "Programming" ] } )
db.categories.findOne( { _id: "Databases" } ).children
db.categories.find( { children: "MongoDB" } )
https://inesslimene.wixsite.com/moncours MONGODB-CRUD 31

Contenu connexe

PDF
MongoDB : la base NoSQL qui réinvente la gestion de données
PDF
Tout ce que le getting started mongo db ne vous dira pas
PDF
Hello mongo
PPTX
Introduction au Jquery
PPTX
2014 04-09-fr - app dev series - session 4 - indexing
KEY
Ruby STAR
KEY
Redis - (nosqlfr meetup #2)
PDF
Présentation gnireenigne
MongoDB : la base NoSQL qui réinvente la gestion de données
Tout ce que le getting started mongo db ne vous dira pas
Hello mongo
Introduction au Jquery
2014 04-09-fr - app dev series - session 4 - indexing
Ruby STAR
Redis - (nosqlfr meetup #2)
Présentation gnireenigne

Tendances (18)

PPTX
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
PDF
SSL 2011 : Présentation de 2 bases noSQL
PPTX
Utilisation de PostgreSQL chez Lengow
PDF
Utilisation de PostgreSQL chez Lengow
PPT
Presentation drush
DOC
PostgreSQL
ODT
Comprendre les scripts shell auto-extractible
PDF
Présentation de ElasticSearch / Digital apéro du 12/11/2014
PPTX
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
PPTX
Pg jsonb format 16-9
PPT
201211 drupagora hostingdrupal
PDF
Sécurité MySQL
PDF
Programmation orientée objet en PHP 5
PDF
Industrialisez le déploiement de vos infrastructures Cloud depuis votre systè...
PDF
Mongodb102
PDF
Installation Et Configuration De Monkey Spider
PPTX
Présentation de data.table
PDF
Php 2 - Approfondissement MySQL, PDO et MVC
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
SSL 2011 : Présentation de 2 bases noSQL
Utilisation de PostgreSQL chez Lengow
Utilisation de PostgreSQL chez Lengow
Presentation drush
PostgreSQL
Comprendre les scripts shell auto-extractible
Présentation de ElasticSearch / Digital apéro du 12/11/2014
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
Pg jsonb format 16-9
201211 drupagora hostingdrupal
Sécurité MySQL
Programmation orientée objet en PHP 5
Industrialisez le déploiement de vos infrastructures Cloud depuis votre systè...
Mongodb102
Installation Et Configuration De Monkey Spider
Présentation de data.table
Php 2 - Approfondissement MySQL, PDO et MVC
Publicité

Similaire à Crud (20)

PDF
MongoDB et Elasticsearch, meilleurs ennemis ?
PDF
Corrigé TP NoSQL MongoDB (5).pdf
PDF
Springioc
PDF
Tout ce que le getting started mongodb ne vous dira pas
PPTX
Optimisation du stockage share point 2010
PPTX
JBoss clustering et tuning (lab 3/3)
PDF
Présentation CoreOS
DOCX
PYTHON MODULES des differents modules en python pour les étudiants
PPTX
php2 : formulaire-session-PDO
PDF
Intro mongodb
PDF
Développement Web- PHP (partie II).pdf
PPT
PHP_partie_.ppt,php_cours_mathematiques_informatiques
PDF
Hibernate.pdf
PPTX
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
PDF
Cours de C++, en français, 2002 - Cours 3.5
PPTX
Réussir une montée en charge avec MongoDB
PDF
Tout ce que le getting started MongoDB ne vous dira pas
PPT
Java Database Connectivity
PPTX
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
PDF
Qualité logicielle
MongoDB et Elasticsearch, meilleurs ennemis ?
Corrigé TP NoSQL MongoDB (5).pdf
Springioc
Tout ce que le getting started mongodb ne vous dira pas
Optimisation du stockage share point 2010
JBoss clustering et tuning (lab 3/3)
Présentation CoreOS
PYTHON MODULES des differents modules en python pour les étudiants
php2 : formulaire-session-PDO
Intro mongodb
Développement Web- PHP (partie II).pdf
PHP_partie_.ppt,php_cours_mathematiques_informatiques
Hibernate.pdf
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Cours de C++, en français, 2002 - Cours 3.5
Réussir une montée en charge avec MongoDB
Tout ce que le getting started MongoDB ne vous dira pas
Java Database Connectivity
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
Qualité logicielle
Publicité

Plus de Ines Slimene (14)

PDF
PDF
PDF
Cassandra
PDF
Agregation
PDF
PDF
PDF
Mapreduce
PDF
Introduction nosql
PDF
Introduction
PDF
PDF
PDF
PDF
Hadoop
PDF
Indexation
Cassandra
Agregation
Mapreduce
Introduction nosql
Introduction
Hadoop
Indexation

Dernier (20)

PDF
TD1 et 2 powerpoint Tests projectifs 2018 2019.pdf
PPTX
Marketing de l'Artisanat et la technique
PPTX
Formation Equipement de protection .pptx
PDF
🎓 Le Secret des Profs Captivants - 💡 Pourquoi l’oral est stratégique en class...
PPTX
Florence Delay.pptx Écrivaine française née à bayonne
PDF
_LEAN_MANAGEMENT_Am_lioration_continue_�_1724845102.pdf
PPTX
Bienvenido slides about the first steps in spanish.pptx
PPTX
Les-Principales METHODES-PEDAGOGIQUES.pptx
PPTX
Conception de documents et d'interfaces numériques.pptx
PPTX
4.1 EXEMPLES DE NICHES sur les réseaux.pptx.pptx
PPTX
L'évaluation-Pédagogique pour enseignants.pptx
PPT
diaporama pictogrammes de securité2.ppt
PPTX
Introduction à la gestion des projets et au suivi
PPTX
Approches-et-Statistiques-dEnseignement-Apprentissage.pptx
PDF
Referentiel des metiers cadres dans la banque
PPTX
Séminaire protection des personnes vulnérables.pptx
PDF
Mémorisation: guide à l'usage des professeurs en recherche de nouvelles idées
PPTX
le-present-de-lindicatif-ou-le-subjonctif-present-exercice-grammatical-feuill...
PPTX
Le tableau volé.pptx Film françaisde pascal Bonitzer
PDF
Cours: Introduction à la Sécurité des Données
TD1 et 2 powerpoint Tests projectifs 2018 2019.pdf
Marketing de l'Artisanat et la technique
Formation Equipement de protection .pptx
🎓 Le Secret des Profs Captivants - 💡 Pourquoi l’oral est stratégique en class...
Florence Delay.pptx Écrivaine française née à bayonne
_LEAN_MANAGEMENT_Am_lioration_continue_�_1724845102.pdf
Bienvenido slides about the first steps in spanish.pptx
Les-Principales METHODES-PEDAGOGIQUES.pptx
Conception de documents et d'interfaces numériques.pptx
4.1 EXEMPLES DE NICHES sur les réseaux.pptx.pptx
L'évaluation-Pédagogique pour enseignants.pptx
diaporama pictogrammes de securité2.ppt
Introduction à la gestion des projets et au suivi
Approches-et-Statistiques-dEnseignement-Apprentissage.pptx
Referentiel des metiers cadres dans la banque
Séminaire protection des personnes vulnérables.pptx
Mémorisation: guide à l'usage des professeurs en recherche de nouvelles idées
le-present-de-lindicatif-ou-le-subjonctif-present-exercice-grammatical-feuill...
Le tableau volé.pptx Film françaisde pascal Bonitzer
Cours: Introduction à la Sécurité des Données

Crud

  • 2. Plan MongoDB Shell Type de données Insertion Lecture Mise à jour Suppression GridFS https://inesslimene.wixsite.com/moncours MONGODB-CRUD 2
  • 3. Mongo Shell Le meilleur moyen d'interroger MongoDB est d'utiliser le shell. Toute l'administration de MongoDB se fait grâce au shell. Le shell MongoDB est très simple à utiliser. https://inesslimene.wixsite.com/moncours MONGODB-CRUD 3
  • 4. Mongo Shell Démarrage : mongod Connexion : mongo Arrêter la base MongoDB : Utiliser la commande shutdown > use admin //connection a la base admin > db.shutdownServer(); //arrêter le serveur https://inesslimene.wixsite.com/moncours MONGODB-CRUD 4
  • 5. Mongo Shell Afficher la base de données courante : db Afficher la liste des bases de données : show dbs Sélectionner une base de données : use <name> Afficher les collections : show collections Supprimer une base de données : db.runCommand({dropDatabase: 1}) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 5
  • 6. Type de données Type Exemple Int/double/.. {a:1} boolean {b:true} String {c:’hello’} Array {d:[1,2,3]} Date {e:ISODate(« 2012-12-19 »)} Object {g:{a:1,b:true}} https://inesslimene.wixsite.com/moncours MONGODB-CRUD 6
  • 7. Mongo Shell Les commandes ont la syntaxe suivante : db.<collection>.<methode> Exemple : ◦ db.inventory.find( { qty: { $gt: 20 } } ) ◦ db.val.insert({name: "Olivier", etude : "Master"}) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 7
  • 8. CRUD Create ◦ db.collection.insert( <document> ) ◦ db.collection.update( <query>, <update>, { upsert: true } ) Read ◦ db.collection.find( <query>, <projection> ) ◦ db.collection.findOne( <query>, <projection> ) Update ◦ db.collection.update( <query>, <update>, <options> ) Delete ◦ db.collection.remove( <query>, <justOne> ) 8https://inesslimene.wixsite.com/moncours MONGODB-CRUD
  • 9. Insertion on voit un champ de nom _id et de type ObjectId a été inséré. ◦ Tout document doit avoir un identifiant unique dans la collection, ◦ Si l'on ne le précise pas, MongoDB se charge de le créer à notre place. ◦ Cet identifiant ne peut pas être modifié et constitue la clé primaire de la collection. On peut préciser le type d’un champ en utilisant : db.people.insert({nom:"smith",age:NumberInt(12)}) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 9
  • 10. Insertion : Garantie de l’écriture Suite a une insertion ou mise a jours nous n’avons pas un accusée de réception de la modification Pour voir le résultat de la requête on utilise : ◦ getLastError Application : exécution de la requête en mode « safe » Dans une application, la commande getLastError a deux paramètres: ◦ w : attendre un accusé de réception d’écriture, mais dans la mémoire et non pas l’écriture sur le disque. (valeur : 0, 1, N, majority) N:accuseé de réception pour N nœuds ◦ j : écrire dans un fichier de journalisation suite a l’écriture en mémoire.(valeur : 0, 1) (garantie la validation du journal du master uniquement) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 10
  • 11. Différents types de requêtes la commande findOne() renvoi au plus un document. Sans argument, elle retourne un document quelconque de la collection https://inesslimene.wixsite.com/moncours MONGODB-CRUD 11
  • 12. Différents types de requêtes La commande find peut prendre deux paramètres: Le premier est un document qui constitue le critère de recherche. Le document retourné sera identique au document spécifié (sur les champs fournis bien sûr). Cette première partie correspond donc à la clause WHERE de SQL. Le second est un document qui permet de restreindre les champs du document retourné, à la manière de la clause SELECT de SQL. En son absence, tous les champs sont retournés. On note aussi que l'identifiant est toujours retourné, à moins que l'on dise explicitement le contraire. https://inesslimene.wixsite.com/moncours MONGODB-CRUD 12
  • 13. Lecture : Utilisation d'opérateurs Opérateur Signification Exemple $gt, $gte, $lt, $lte >, >=, <, <= score: { $gt: 95, $lte: 98 } $exists test sur l'existence d'un champ profession: { $exists: true } $type test sur le type d'un champ name: { $type: 2 } $regex recherche de pattern dans une chaine name: { $regex: "e$" } $or OU logique sur les clauses fournies dans le tableau $or: [ { name: { $regex: "e$"} }, age: { $exists: true} ] $and ET logique sur les clauses fournies dans le tableau $and: [ { name: { $regex: "e$"} }, age: { $exists: true} ] https://inesslimene.wixsite.com/moncours MONGODB-CRUD 13
  • 14. Lecture : Utilisation d'opérateurs https://inesslimene.wixsite.com/moncours MONGODB-CRUD 14 db.people.find() Select * from people db.people.find({"age" : 27}) Select * from people where age=27 db.people.find({}, {“nom" : 1, “age" : 1}) Select nom,age from people db.people.find({}, {“nom" : 0}) Select age,profession from people db.people.find({"age" : {"$gte" : 18, "$lte" : 30}}) Select * from people where age between 18 and 30 db.raffle.find({"ticket_no" : {"$in" : [725, 542, 390]}}) Select * from raffle where ticket_no in (725,542,390)
  • 15. Lecture : Utilisation d'opérateurs Si l'on donne plusieurs conditions pour le même champ, c'est la dernière qui va gagner car le shell va construire un premier objet correspondant à la première condition, puis écraser cet objet quand il va lire la seconde condition. https://inesslimene.wixsite.com/moncours MONGODB-CRUD 15
  • 16. Lecture : Utilisation d'opérateurs Afficher les collections qui contiennent le champ age db.people.find({age:{$exists:true}}) Afficher les collections dont le type du champ nom est String db.people.find({nom:{$type:2}}) Nom qui contient la lettre i : db.people.find({nom:{$regex:"i"}}) Nom qui se termine par h :db.people.find({nom:{$regex:"h$"}}) Nom qui commence par : db.people.find({nom:{$regex:"^s"}}) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 16
  • 17. Lecture : Utilisation d'opérateurs Operateur OR : db.people.find({$or:[{name:{$regex:"e$"}},{age:{$exists:true}}]}) Operateur AND : db.people.find({$and:[{name:{$regex:"e$"}},{age:{$exists:true}}]}) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 17
  • 18. Lecture : Utilisation d'opérateurs Afficher les utilisateurs dont le nom est Smith ou Bob db.users.find( { nom : { $in : [ "smith" , "Bob" ] }}) Afficher les utilisateurs dont leurs préférences sont running et pickles. db.users.find({favorites:{$all:["running","pickles"] }}) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 18
  • 19. Lecture : Utilisation d'opérateurs limit(): pour récupérer les n premiers résultats uniquement sort(): pour trier les résultats count(): retourne le nombre de documents satisfaisant la requête. https://inesslimene.wixsite.com/moncours MONGODB-CRUD 19
  • 20. Requêtes et sous-documents Sous document spécifique Afficher l’article dont le nom de l’auteur est Wursteisen : https://inesslimene.wixsite.com/moncours MONGODB-CRUD 20
  • 21. Mettre à jour les documents La méthode update() de MongoDB possède quatre variantes: ◦ La première permet la mise à jour globale des documents ◦ La seconde variante permet une mise à jour sélective des champs. On utilise pour cela de nouveaux opérateurs. Le premier et probablement le plus utile est l'opérateur $set: https://inesslimene.wixsite.com/moncours MONGODB-CRUD 21
  • 22. Mettre à jour les documents ◦ On peut aussi utiliser l'opérateur $inc sur les champs entiers: ◦ L'opérateur suivant, $unset, permet de supprimer un champ d'un document: https://inesslimene.wixsite.com/moncours MONGODB-CRUD 22
  • 23. Mises à jour de plusieurs documents Les requêtes de mise à jour ne touchent qu'un seul document. Si on souhaite mettre à jour plusieurs documents, il faut passer un troisième argument à la méthode update() https://inesslimene.wixsite.com/moncours MONGODB-CRUD 23
  • 24. Mettre à jour un champ de type tableau Création champ de type tableau: modifier la deuxième valeur du tableau "activité" pour lui attribuer la valeur "camping". Ajouter une valeur au tableau des activités ($push) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 24
  • 25. Mettre à jour un champ de type tableau L'opérateur $pop permet de retirer une valeur du tableau. ◦ Si la valeur passée à l'opérateur est 1, ce sera la dernière valeur qui sera supprimée, ◦ si c'est -1 ce sera la première valeur. Pour spécifier l’élément a retirer ($pull) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 25
  • 26. Suppression de documents Delete : db.people.remove({}) Drop collection : db.article.drop() https://inesslimene.wixsite.com/moncours MONGODB-CRUD 26
  • 27. GridFS GridFS est une spécification MongoDB qui permet le stockage et la lecture des fichiers a grande taille comme les images, les fichiers audio et vidéo, etc. C’est une sorte de système de fichier. Mais le stockage se fait dans des collections MongoDB. GridFS offre la possibilité de stocker des fichiers même si leurs tailles sont supérieures a 16M. https://inesslimene.wixsite.com/moncours MONGODB-CRUD 27
  • 28. GridFS GridFS divise un fichier en morceaux (chunks) et enregistre chaque morceaux de données dans un document, chacun de taille max 255k. GridFS utilise par défaut deux collections fs.files et fs.chunks pour enregistrer les métadonnées des fichiers et les morceaux. Chaque morceau est identifié par un unique _id. le fs.files présente le document père. Le champ files_id dans le document fs.chunks relie les morceaux a leur père. https://inesslimene.wixsite.com/moncours MONGODB-CRUD 28
  • 29. GridFS Insérer la sequence audio song.mp3 dans mongoDB ◦ $ mongofiles -d gridfs put song.mp3 gridfs est le nom de la base dans laquelle le fichier serait inséré. $ mongo gridfs > db.fs.files.find() > db.fs.chunks.count({files_id:ObjectId('5458ea27cd2a7c2f3fbaf181')}) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 29
  • 31. Structure en arbre db.categories.insert( { _id: "MongoDB", children: [] } ) db.categories.insert( { _id: "dbm", children: [] } ) db.categories.insert( { _id: "Databases", children: [ "MongoDB", "dbm" ] } ) db.categories.insert( { _id: "Languages", children: [] } ) db.categories.insert( { _id: "Programming", children: [ "Databases", "Languages" ] } ) db.categories.insert( { _id: "Books", children: [ "Programming" ] } ) db.categories.findOne( { _id: "Databases" } ).children db.categories.find( { children: "MongoDB" } ) https://inesslimene.wixsite.com/moncours MONGODB-CRUD 31