SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
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

Tendances

MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"
MIC QRS "JWT, la superstar pour sécuriser vos WebAPI"Denis Voituron
 
SSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLSSL 2011 : Présentation de 2 bases noSQL
SSL 2011 : Présentation de 2 bases noSQLHervé Leclerc
 
Utilisation de PostgreSQL chez Lengow
Utilisation de PostgreSQL chez LengowUtilisation de PostgreSQL chez Lengow
Utilisation de PostgreSQL chez LengowMickaël Le Baillif
 
Utilisation de PostgreSQL chez Lengow
Utilisation de PostgreSQL chez LengowUtilisation de PostgreSQL chez Lengow
Utilisation de PostgreSQL chez LengowLengow
 
Comprendre les scripts shell auto-extractible
Comprendre les scripts shell auto-extractibleComprendre les scripts shell auto-extractible
Comprendre les scripts shell auto-extractibleThierry Gayet
 
Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Silicon Comté
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01-rev.MongoDB
 
201211 drupagora hostingdrupal
201211 drupagora hostingdrupal201211 drupagora hostingdrupal
201211 drupagora hostingdrupalOxalide
 
Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Programmation orientée objet en PHP 5
Programmation orientée objet en PHP 5Kristen Le Liboux
 
Industrialisez le déploiement de vos infrastructures Cloud depuis votre systè...
Industrialisez le déploiement de vos infrastructures Cloud depuis votre systè...Industrialisez le déploiement de vos infrastructures Cloud depuis votre systè...
Industrialisez le déploiement de vos infrastructures Cloud depuis votre systè...Microsoft Décideurs IT
 
Installation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderInstallation Et Configuration De Monkey Spider
Installation Et Configuration De Monkey SpiderMohamed Ben Bouzid
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 

Tendances (18)

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

Similaire à Crud

MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?Sébastien Prunier
 
Corrigé TP NoSQL MongoDB (5).pdf
Corrigé TP NoSQL MongoDB (5).pdfCorrigé TP NoSQL MongoDB (5).pdf
Corrigé TP NoSQL MongoDB (5).pdfOumaimaZiat
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasBruno Bonnin
 
Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Nicolas Georgeault
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)Fourat Zouari
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOSgcatt
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfYasushiTsubakik
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5Laurent BUNIET
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB MongoDB
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasBruno Bonnin
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
 
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...Microsoft Technet France
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurMicrosoft Technet France
 
Mop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commandeMop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commandeCyrille Coeurjoly
 

Similaire à Crud (20)

MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
 
Corrigé TP NoSQL MongoDB (5).pdf
Corrigé TP NoSQL MongoDB (5).pdfCorrigé TP NoSQL MongoDB (5).pdf
Corrigé TP NoSQL MongoDB (5).pdf
 
Springioc
SpringiocSpringioc
Springioc
 
Tout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pasTout ce que le getting started mongodb ne vous dira pas
Tout ce que le getting started mongodb ne vous dira pas
 
Optimisation du stockage share point 2010
Optimisation du stockage share point 2010Optimisation du stockage share point 2010
Optimisation du stockage share point 2010
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Intro mongodb
Intro mongodbIntro mongodb
Intro mongodb
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdf
 
Hibernate.pdf
Hibernate.pdfHibernate.pdf
Hibernate.pdf
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5Cours de C++, en français, 2002 - Cours 3.5
Cours de C++, en français, 2002 - Cours 3.5
 
Réussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDBRéussir une montée en charge avec MongoDB
Réussir une montée en charge avec MongoDB
 
Tout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pasTout ce que le getting started MongoDB ne vous dira pas
Tout ce que le getting started MongoDB ne vous dira pas
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
System Center 2012 | SCCM : L'inventaire de A à Z avec System Center Configur...
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL Serveur
 
Mop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commandeMop export-dataloader-salesforce-en-ligne-commande
Mop export-dataloader-salesforce-en-ligne-commande
 

Plus de Ines Slimene (14)

Spark
SparkSpark
Spark
 
Redis
RedisRedis
Redis
 
Cassandra
CassandraCassandra
Cassandra
 
Agregation
AgregationAgregation
Agregation
 
Pig
PigPig
Pig
 
Neo4j
Neo4jNeo4j
Neo4j
 
Mapreduce
MapreduceMapreduce
Mapreduce
 
Introduction nosql
Introduction nosqlIntroduction nosql
Introduction nosql
 
Introduction
IntroductionIntroduction
Introduction
 
Hive
HiveHive
Hive
 
Hdfs
HdfsHdfs
Hdfs
 
Hbase
HbaseHbase
Hbase
 
Hadoop
HadoopHadoop
Hadoop
 
Indexation
IndexationIndexation
Indexation
 

Dernier

DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Atelier Canopé 37 - Tours
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfAtelier Canopé 37 - Tours
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Majida Antonios, M.Ed.
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...Unidad de Espiritualidad Eudista
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfAtelier Canopé 37 - Tours
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 

Dernier (17)

DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 

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