0% ont trouvé ce document utile (0 vote)
196 vues32 pages

ch3 CRUD

Ce chapitre traite des opérations CRUD (Create, Read, Update, Delete) dans MongoDB. Il présente l'utilisation du shell MongoDB ainsi que les commandes permettant d'insérer, lire, mettre à jour et supprimer des documents.

Transféré par

fatma.abid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
196 vues32 pages

ch3 CRUD

Ce chapitre traite des opérations CRUD (Create, Read, Update, Delete) dans MongoDB. Il présente l'utilisation du shell MongoDB ainsi que les commandes permettant d'insérer, lire, mettre à jour et supprimer des documents.

Transféré par

fatma.abid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 3 : MongoDB

Opérations CRUD
Ines Slimen
Plan
• MongoDB Shell
• Types de données
• Insertion
• Lecture
• Mise à jour
• Suppression
• Transfert de données
• Import / Export
• Sauvegarde et récupération

18/04/2020 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.

18/04/2020 MongoDB-CRUD 3
Mongo Shell
• Démarrage : cmd → mongod

• Connexion : cmd → mongo

• Arrêter la base MongoDB : Utiliser la commande shutdown


> use admin //connection à la base admin
> [Link](); //arrêter le serveur

18/04/2020 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>, Exemple : use mabd
Par défaut, et suite à chaque nouvelle connexion, le serveur Mongo pointe sur la
base de données test
• Afficher les collections : show collections
• Supprimer une base de données : [Link]({dropDatabase: 1})
Le shell est sensible à la casse
Exemples :
use Admin use admin
Show dbs show dbs

18/04/2020 MongoDB-CRUD 5
Types 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}}

18/04/2020 MongoDB-CRUD 6
Mongo Shell
• Les commandes CRUD ont la syntaxe suivante :
db.<collection>.<methode>
• Exemple :
• [Link]({name: "Olivier", etude : "Master"})

18/04/2020 MongoDB-CRUD 7
CRUD
• Create
• [Link]( <document> )
• [Link]( <query>, <update>, { upsert: true } )
• Read
• [Link]( <query>, <projection> )
• [Link]( <query>, <projection> )
• Update
• [Link]( <query>, <update>, <options> )
• Delete
• [Link]( <query>, <justOne> )

18/04/2020 MongoDB-CRUD 8
Insertion
• Prenons cet exemple qui insère un document dans la collection people :

• Pour pouvoir l’afficher, il faudrait utiliser la commande find()

• On voit qu’un champ portant le nom _id et de type ObjectId a été inséré.
• Tout document doit avoir un identifiant unique ObjectId dans la collection,
• Si on ne le précise pas lors de l’insertion, 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 aussi préciser le type d’un champ comme le montre l’exemple :
[Link]({nom:"smith",age:NumberInt(12)})
18/04/2020 MongoDB-CRUD 9
Lecture : find() (1/2)

• La commande find() permet de rechercher et d’afficher des documents


• 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 avec l’option _id:0 ou _id:false
18/04/2020 MongoDB-CRUD 10
Lecture : find() (2/2)
• Lorsqu’on souhaite afficher un champ on doit le préciser au niveau du
deuxième critère du find() avec l’option 1 ou true
• Exemple : [Link]({},{nom:1,prenom:true,_id:0}) => Affichage des
noms et prénoms de tous les documents qui en possèdent (MongoDB est
sans schéma obligatoire)
• Remarque : Lorsqu’aucun critère de recherche n’est utilisé (et donc, affichage de tous
les documents) les {} sont obligatoires
• Dans le shell mongo, les résultats sont paginés et l'on passe aux résultats
suivants en tapant la commande it (pour iterate).
• Pour un bel affichage, il suffit d’ajouter la fonction pretty() à la fin de la
fonction de find() ou findOne()
• Exemple : [Link]().pretty()

18/04/2020 MongoDB-CRUD 11
Lecture : findOne()
• La commande findOne() renvoi au plus un document.
• Sans argument, elle retourne un document quelconque de la
collection
• Exemple: Différence entre find() et findOne()

18/04/2020 MongoDB-CRUD 12
Lecture : Utilisation d'opérateurs (1/7)
Opérateur Signification Exemple
$gt : Greater than >
$gt, $gte, $lt, $gte : Greater than or Equal >=
score: { $gt: 95, $lte: 98 }
$lte $lt : lower than <
$lte : lower than or equal <=
$exists Test sur l'existence d'un champ profession: { $exists: true }
$type Test sur le type d'un champ name: { $type: 2 }
Recherche de pattern dans une
$regex name: { $regex: "e$" }
chaine
OU logique sur les clauses fournies
$or $or: [ { name: { $regex: "e$"} }, age: { $exists: true} ]
dans le tableau
ET logique sur les clauses fournies
$and $and: [ { name: { $regex: "e$"} }, age: { $exists: true} ]
dans le tableau

18/04/2020 MongoDB-CRUD 13
Lecture : Utilisation d'opérateurs (2/7)

MongoDB SQL
[Link]() Select * from people
[Link]({"age" : 27}) Select * from people where age=27
[Link]({}, {“nom" : 1, “age" : 1}) Select nom,age from people
[Link]({}, {“nom" : 0}) Select age,profession from people
[Link]({"age" : {"$gte" : 18, "$lte" : 30}}) Select * from people where age between 18 and 30
[Link]({"ticket_no" : {"$in" : [725, 542, 390]}}) Select * from raffle where ticket_no in (725,542,390)

18/04/2020 MongoDB-CRUD 14
Lecture : Utilisation d'opérateurs (3/7)
• 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.

18/04/2020 MongoDB-CRUD 15
Lecture : Utilisation d'opérateurs (4/7)
• Afficher les documents qui contiennent le champ age
[Link]({age:{$exists:true}})
• Afficher les document dont le type du champ nom est String
[Link]({nom:{$type:2}})
• Nom qui contient la lettre i : [Link]({nom:{$regex:"i"}})
• Nom qui se termine par h :[Link]({nom:{$regex:"h$"}})
• Nom qui commence par : [Link]({nom:{$regex:"^s"}})

18/04/2020 MongoDB-CRUD 16
Lecture : Utilisation d'opérateurs (5/7)
• Afficher les documents représentant des personnes dont le nom se
termine par e et dont le champ age existe
[Link]({$or:[{name:{$regex:"e$"}},{age:{$exists:true}}]})

• Afficher les documents représentant des personnes dont le nom se


termine par e ou dont le champ age existe
[Link]({$and:[{name:{$regex:"e$"}},{age:{$exists:true}}]})

18/04/2020 MongoDB-CRUD 17
Lecture : Utilisation d'opérateurs (6/7)
• Afficher les utilisateurs dont le nom est Smith ou Bob
[Link]( { nom : { $in : [ "smith" , "Bob" ] }})
• Afficher les utilisateurs dont leurs préférences sont running et pickles.
[Link]({favorites:{$all:["running","pickles"] }})

18/04/2020 MongoDB-CRUD 18
Lecture : Utilisation d'opérateurs (7/7)
• 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.

18/04/2020 MongoDB-CRUD 19
Lecture d’un sous-documents
• Voici un exemple de document contenant un sous document

• Afficher l’article dont le nom de l’auteur est Wursteisen :

18/04/2020 MongoDB-CRUD 20
Mise à jour des documents (1/2)
• La méthode update() de MongoDB possède plusieurs 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:

18/04/2020 MongoDB-CRUD 21
Mise à jour des documents (2/2)
• On peut aussi utiliser l'opérateur $inc sur les champs entiers pour
incrémenter leur valeur:

• L'opérateur suivant, $unset, permet de supprimer un champ d'un document:

18/04/2020 MongoDB-CRUD 22
Mise à jour de plusieurs documents
• Les requêtes de mise à jour ne s’appliquent qu’à un seul document.
• Si on souhaite mettre à jour plusieurs documents, il faut passer un
troisième argument à la méthode update() : {multi:true}

18/04/2020 MongoDB-CRUD 23
Mise à jour d’un champ de type tableau (1/2)
• Création champ de type tableau (le premier indice d’un tableau est 0):

• Modifier la deuxième valeur du tableau "activité" pour lui attribuer la valeur


"camping".

• Ajouter une valeur au tableau des activités : l’opérateur $push

18/04/2020 MongoDB-CRUD 24
Mise à jour d’un champ de type tableau (2/2)
• 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 à retirer : $pull

18/04/2020 MongoDB-CRUD 25
Suppression de documents et de collections
• Suppression de documents : remove()
• Supprimer les documents dont le nom est Jean : [Link]()

• Suppression de collections : drop()


• Supprimer la collection article : [Link]()

18/04/2020 MongoDB-CRUD 26
Transfert de données
Import
Export

18/04/2020 Introduction MongoDB 27


Import/Export (1/2)
• mongoexport et mongoimport sont deux commandes utilisées pour
l’import et l’export de données à partir de fichiers JSON ou CSV.
• Exemple d’Import à partir d’un fichier json
mongoimport --db mabase --collection personnes --type json --file "c:\[Link] "
Avec :
--db : nom de la base de données cible
--collection : nom de la collection cible
--type : type du fichier source à importer
--file : adresse du fichier source à importer

18/04/2020 Introduction MongoDB 28


Import/Export (2/2)
• Exemple d’Export sous format json
mongoexport --db test --collection people --out [Link]
Avec :
--db : nom de la base de données source
--collection : nom de la collection à exporter
--out : fichier de sortie
• Remarque :
Ces commandes doivent être exécutées dans une invite de commande
cmd (et non pas au niveau du shell mongo)

18/04/2020 MongoDB-CRUD 29
Sauvegarde et récupération

18/04/2020 MongoDB-CRUD 30
Sauvegarde
• mongodump : permet de sauvegarder une partie ou la totalité de la base dans un
dossier dump.
• mongodump --help : visualiser les options de mongodump
• --db DBNAME sauvegarde de la base DBNAME
• --collection COLLECTIONNAME sauvegarde la collection COLLECTIONNAME
• Exemple :
mongodump --db test --out backup
→ sauvegarder la base test dans le répertoire backup

18/04/2020 MongoDB-CRUD 31
Récupération
• mongorestore : récupère les données à partir d’un fichier BSON
• --db et --collection permettent de récupérer une base et une collection
spécifique.
• Exemple:
mongorestore --db test --collection people backup/test/[Link]
→récupérer la collection people dans la base test à partir du fichier [Link]

18/04/2020 MongoDB-CRUD 32

Vous aimerez peut-être aussi