You are on page 1of 5

NoSQL ISET Nabeul 2019-2020

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)

Lancer le serveur Mongodb :

- Vous ouvrez une session invite de commandes et vous tapez mongod

- 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.

3) Création d’une base de données MongoDb


Pour créer une base de données il faut exécuter une instruction use sur une nouvelle base
de données, puis donner un ordre d'insertion d'un premier document JSON avec insert.

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

A partir des instructions ci-dessus :


- Créer une nouvelle base MongoDB. Nommez votre base
- Utiliser l'instruction use nom_base,
- Créer une collection nommée Cinema dans la base
- Puis exécuter au moins une instruction d'insertion.
2) Interrogation de la base
En utilisant les langage de requête de MongoBD , écrire les requêtes suivantes :

a- Quels sont les films sortis en 1990 ?


Syntaxe db.col.find({"attribute":"value"})
Solution db.Cinema.find({"annee":1990})
b- Quels sont les films sortis avant 2000 ?

On utilisera l'objet {$lt:value} à la place de la valeur de l'attribut à tester ($lt pour


lesser than)

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}})

f- Quels sont les films dans lesquels joue Clint Eastwood ?


Solution
db.Cinema.find({"acteurs":{nom:"Eastwood", prenom:"Clint"}})

g- Quels sont les films dans lesquels joue un Eastwood ?


Utiliser le parser de tableau $elemMatch:{"key":"value"} à la place de la valeur.
Solution
db.Cinema.find({"acteurs":{$elemMatch:{"nom":"Eastwood"}}})
h- Quels sont les noms des films dans lesquels joue un Eastwood ?

 Pour gérer la projection, utiliser un second argument de la clause find() :


db.Cinema.find({document JSON de sélection }, {document JSON de
projection})
 avec document JSON de projection de la forme : {"attribut1":1,
"attribut2":1...}

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})

i- Ajouter trois utilisateurs préférant chacun un ou deux films.

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})

You might also like