TP Mongo DB 1
TP Mongo DB 1
1)Installation Mongo DB
- Téléchargez MongoDB depuis le site Web officiel MongoDB
https://www.mongodb.com/download-center ou bien vous trouvez un fichier zippé
- Installer Mongodb dans votre répertoire (généralement vous le trouvez par défaut dans le
répertoire C:\Program Files\MongoDB) ou bien vous décompressez le fichier zippé dans votre
répertoire de travail
- Pour accéder à mongodb dans n’importe quel répertoire, il est préférable d’ajouter dans la
variable d’environnement le dossier bin (exemple C:\Program
Files\MongoDB\Server\4.2\bin )
Remarque MongoDB a besoin d’un dossier (répertoire de données) pour stocker ses données. Par
défaut, il sera stocké dans « C: \ data \ db », créez ce dossier manuellement. MongoDB ne le créera
pas pour vous. Vous pouvez également spécifier un autre répertoire de données avec l’option --
dbpath .
2)
- Puis vous lancez le shell mongoDb dans une autre fenêtre invites de commandes en tapant
mongo
2) Shell MongoDB
Cette dernière commande lance le shell MongoDB qui est en fait un interpreteur javascript complet.
Vous pouvez donc y exécuter n’importe quel code javascript. Le shell propose en plus un certain
nombre de commandes spécifiques courantes dans les interfaces avec une base de données, par
exemple :
show dbs permet d’afficher les bases de données existante
use <db name> permet de connecter la session à la base de donnée db name.
1
NoSQL ISET Nabeul 2019-2020
show collections affiche les collections de la base de données courante.
help donne un aperçu des comm andes les plus importantes et de leur usage.
Remarque
MongoDB est une base schema-less, la création des bases et des collections est dynamique
lors d'une première insertion de données.
Exemple
use db1
db.col1.insert( { "x":1 } )
Une base de donnée db1 est créer contenant une collection col1 dans laquelle on a insérez
sx :
Pour faire l’affichage des collections existante
Show collections
Pour afficher le contenu d’une collection
db.col1.find()
Exercice1
Soit les données suivantes représentant des films de cinéma.
db.Cinema.drop()
db.Cinema.insert(
{
nom:"Goodfellas",
annee:1990,
realisateur:{nom:"Scorsese", prenom:"Martin"},
acteurs:
[
{nom:"De Niro", prenom:"Robert"},
{nom:"Liotta", prenom:"Ray"},
{nom:"Pesci", prenom:"Joe"}
]
})
db.Cinema.insert(
{
nom:"The Godfather",
annee:1972,
realisateur:{nom:"Coppola", prenom:"Francis Ford"},
acteurs:
[
{nom:"Pacino", prenom:"Al"},
{nom:"Brando", prenom:"Marlon"},
{nom:"Duvall", prenom:"Robert"}
]
})
2
NoSQL ISET Nabeul 2019-2020
db.Cinema.insert(
{
nom:"Million Dollar Baby",
realisateur:{nom:"Eastwood", prenom:"Clint"},
acteurs:
[
{nom:"Swank", prenom:"Hilary"},
{nom:"Eastwood", prenom:"Clint"}
]
})
db.Cinema.insert(
{
nom:"Gran Torino",
annee:2008,
realisateur:{nom:"Eastwood", prenom:"Clint"},
acteurs:
[
{nom:"Vang", prenom:"Bee"},
{nom:"Eastwood", prenom:"Clint"}
]
})
db.Cinema.insert(
{
nom:"Unforgiven",
realisateur:{nom:"Eastwood", prenom:"Clint"},
acteurs:
[
{nom:"Hackman", prenom:"Gene"},
{nom:"Eastwood", prenom:"Clint"}
]
})
db.Cinema.insert(
{
nom:"Mystic River",
realisateur:{nom:"Eastwood", prenom:"Clint"},
acteurs:
[
{nom:"Penn", prenom:"Sean"},
{nom:"Bacon", prenom:"Kevin"}
]
})
db.Cinema.insert(
{
nom:"Honkytonk Man",
realisateur:{nom:"Eastwood", prenom:"Clint"},
annee:1982,
acteurs:
[
{nom:"Eastwood", prenom:"Kyle"},
{nom:"Bloom", prenom:"Verna"}
]
})
db.Cinema.find()
L'objectif est d'initialiser une base MongoDB en utilisant les données ci-dessus.
1) Création de la base MongoDB
3
NoSQL ISET Nabeul 2019-2020
Solution : db.Cinema.find({"annee":{$lt:2000}})
c- Quels sont les films réalisés par Clint Eastwood ?
On utilisera un objet comme valeur.
Solution
db.Cinema.find({"realisateur":{"nom":"Eastwood", "prenom":"Clint"}})
d- Quels sont les films réalisés par quelqu'un prénommé Clint ?
Utiliser le navigateur de propriété des objets point : object.attribute.
Solution
db.Cinema.find({"realisateur.prenom":"Clint"})
e- Quels sont les films réalisés par quelqu'un prénommé Clint avant 2000 ?
Utiliser une liste de conditions attribut:valeur pour spécifier un AND (et logique) :
db.col.find({"attribute1":"value1", "attribute2":"value2"})
Solution
db.Cinema.find({"realisateur.prenom":"Clint", "annee":{$lt:2000}})
4
NoSQL ISET Nabeul 2019-2020
Les identifiants sont toujours affichés par défaut, si on veut les supprimer, on peut
ajouter la clause _id:0 dans le document de projection.
Solution
db.Cinema.find({"acteurs":{$elemMatch:{"nom":"Eastwood"}}},{"nom":1,"
_id":0})
db.User.insert(
{
"pseudo":"Stph",
"liked" :
[
{"film":"590c366d70f50381c920ca71","star":3},
{"film":"590c366d70f50381c920ca72","star":1}
]
}
)
db.User.insert(
{
"pseudo":"Luke",
"liked" :
[
{"film":"590c366d70f50381c920ca71","star":2}
]
}
)
db.User.insert(
{
"pseudo":"Tuco",
"liked" :
[
{"film":"590c366d70f50381c920ca74","star":3}
]
}
)
j- Quels sont les utilisateurs qui aiment au moins un film avec 3 étoiles ?
Solution
db.User.find({"liked":{$elemMatch:{"star":3}}})
k- Quels sont les identifiants des films qui sont aimés au moins une fois avec 3 étoiles ?
Solution
db.User.find({"liked":{$elemMatch:{"star":3}}}, {"_id":0,
"liked.film":1})