Exercice 1
use TestDB
db.createCollection('ColEtu')
etu1={
"numEtudiant" : "etu2020001",
"firstname" : "Cecilia",
"lastname" : "Lawrence",
"cycle" : 2,
"adresse" : {
"num" : 12,
"rue" : "des Cailloux",
"ville" : "Amiens",
"pays" : "France"
},
"email" : ["lawrence@gmail.com"],
"cours" : [
{
"code" : "UE001",
"titre" : "réseaux",
"description" : "UE metier",
"credit" : 30
},
{
"code" : "UE005",
"titre" : "administration",
"description" : "UE spécialité",
"credit" : 20
},
{
"code" : "UE003",
"titre" : "systèmes",
"description" : "UE Option",
"credit" : 10
}
]
}
db.ColEtu.find(etu1)
Exercice 2
Visualiser des informations
Exercice synthèse des commandes du chapitre.
Visualiser collection ColEtu crée
db.ColEtu.find().pretty()
Quelle est la commande permettant de déterminer le nombre d’étudiants de la collection
db.ColEtu.stats()
Recupérer le premier et le dernier etudiant de la collection
db.ColEtu.find().limit(1).pretty() db.ColEtu.find().limit(1).sort({_id:-1}).pretty()
Lister le nom et prénom des etudiants de 3ème cycle
db.ColEtu.find({"cycle":3},{firstname:1,lastname:1,_id:0}).pretty()
Lister le numEtudiant et les cours des etudiants qui ont suivi des cours dans plus de 2 UE
$exists
db.ColEtu.find({querry},{projection}) (1) db.ColEtu.find({"cours.2":{ $exists: true }},{}).pretty() (2) db.ColEtu.find({"cours.2":{ $exists: true }},{numEtudiant:1,cours:1,_id:0}).pretty() (3)
Lister les informations sur tous les étudiants dans l’ordre alphabétique (du firstname) sans le paramètre _id
db.ColEtu.find({},{firstname:1,_id:0}).sort({firstname:1}).pretty() db.ColEtu.find({},{_id:0}).sort({firstname:1}).pretty()
Mettre à jour des données
Mettez à jour les info sur l’etudiant
db.ColEtu.update({Critères},{MAJ}) (1) db.ColEtu.find({firstname:"Wilder", cycle:2},{}).pretty() (2)
Avec fonction update()
db.ColEtu.update({firstname:"Wilder", cycle:2},{$set:{lastname:"Trevino Junior"}})
Avec fonction save()
db.ColEtu.save({})
Note
|
MongoDB deprecates the db.collection.save() method. Instead use db.collection.insertOne() or db.collection.replaceOne() instead. |
db.collection.insertOne( <document>, { writeConcern: <document> } )
Output of: db.ColEtu.find({firstname:"Wilder", cycle:2},{}).pretty()
{
"_id" : ObjectId("5e622a607cd31a9566071ce6"),
"numEtudiant" : "etu2020005",
"cycle" : 2,
"firstname" : "Wilder",
"lastname" : "CHANGE LASTNAME HERE", (1)
"adresse" : {
"num" : 38,
"rue" : "Albert Camus",
"ville" : "Amiens",
"pays" : "France"
},
"email" : [
"trevinoj@gmail.com",
"trevinoj@yahoo.com"
],
"cours" : [
{
"code" : "UE001",
"titre" : "réseaux",
"description" : "UE métier",
"credit" : 30
},
{
"code" : "UE005",
"titre" : "administration",
"description" : "UE spécialité",
"credit" : 20
},
{
"code" : "UE003",
"titre" : "systèmes",
"description" : "UE Option",
"credit" : 10
}
]
}
Note
|
(1) Remplacer l’ancienne valeur pour utiliser methode save()
|
db.ColEtu.save(
{
"_id" : ObjectId("5e622a607cd31a9566071ce6"),
"numEtudiant" : "etu2020005",
"cycle" : 2,
"firstname" : "Wilder",
"lastname" : "Trevino Junior",
"adresse" : {
"num" : 38,
"rue" : "Albert Camus",
"ville" : "Amiens",
"pays" : "France"
},
"email" : [
"trevinoj@gmail.com",
"trevinoj@yahoo.com"
],
"cours" : [
{
"code" : "UE001",
"titre" : "réseaux",
"description" : "UE métier",
"credit" : 30
},
{
"code" : "UE005",
"titre" : "administration",
"description" : "UE spécialité",
"credit" : 20
},
{
"code" : "UE003",
"titre" : "systèmes",
"description" : "UE Option",
"credit" : 10
}
]
})
Supprimer la dernière adresse mail de l’étudiant
db.ColEtu.find({"numEtudiant":"etu2020006"},{"email":1}).pretty() (1) db.ColEtu.remove({"numEtudiant":"etu2020006"})
Recupérer la dernière adresse email de l’etudiant
db.ColEtu.find({"numEtudiant":"etu2020006"}).forEach( function(etudiant){ var size = etudiant.email.length; print("Mail en dernière position " + etudiant.firstname + " "+etudiant.email[size-1]); } )
Note
|
On ne peut pas utiliser remove pour supprimer un champ spécifique, on l’utilise pour supprimer un objet complet. |
SOLUTION avec l’operateur $pop @docs.mongodb.com
db.ColEtu.update({"numEtudiant":"etu2020006"},{$pop:{email:-1}})
Export de la base .json
mongoexport --db TestDB --collection ColEtu --out fichierexport.json
Ajouter un nouveau paramètre qui varie en fonction du cycle (ex: anneM)
db.ColEtu.find().forEach(
function(etudiant){
if(etudiant.cycle==1){
etudiant.anneeM=3;
db.ColEtu.save(etudiant);
} else if (etudiant.cycle==2) {
etudiant.anneeM=5;
db.ColEtu.save(etudiant);
} else {
etudiant.anneeM=8;
db.ColEtu.save(etudiant);
}
}
)
Note
|
Renommer les champs firstname et lastname par nom, prenom
A FAIRE
|
Exercice 3
Afficher nom, prénom, cycle des étudiants à partir du 3ème au 7ème
var forProject = {$project: {"firstname":1,"lastname":1,"cycle":1,_id:0}};
var forSkip = {$skip: 2};
var forLimit = {$limit: 5};
db.ColEtu.aggregate([forProject,forSkip,forLimit]);
Note
|
forLimit = {$limit: {5}}; on fait 7eme-3eme+1 = 5. |
Afficher le nom, le prénom, et l’adresse des étudiants dont le nom commence par "w"
db.ColEtu.find({},{lastname:1,firstname:1, adresse:1, _id:0}) db.ColEtu.find({ firstname: { $regex: /^w/, $options: 'i' } },{lastname:1,firstname:1, adresse:1, _id:0})
Afficher deux étudiants de cycle 2 sans le paramètre _id avec le nom en majuscule et en remplaçant le numEtudiant par l’ordre d’affichage (1,2)
var forProject = {$project: {"firstname":1,"lastname":1,"cycle":1,_id:0}};
var forLimit = {$limit: 2};
var forUppercase = {
$project:
{
lastname: { $toUpper: "$lastname" }
}
};
var count = 1;
var cur=db.ColEtu.aggregate([forProject,forUppercase,forLimit])
while(cur.hasNext()){
var etudiant=cur.next()
etudiant.numEtudiant = count;
count++;
printjson(etudiant);
}
Note
|
Pour load > load("C:/Program Files/MongoDB/Server/4.2/data/scripts/new.js")
|