Vous êtes sur la page 1sur 24

Compte rendu Tp1

MongoDB
Et exemples dans le
cours

Réaliser par :

Hedil Zbidi

3 DNI 1

1
1. Installation
2. Mise en route et opérations basiques
2.1 Shell Mongo et CRUD :

1. Insérez un document dans la collection inventory comme suit :

2. Insérez un autre document dans la collection inventory comme suit :

3. Insérez plusieurs documents à la fois avec la commande insertMany :

2
4. Exécutez la commande db.inventory.find() pour afficher les documents que vous venez
d’insérer dans la collection inventory :

3
4
Recherche :
1. db.inventory.find({ qty : 25 }) :

L’équivalent SQL de cette requête :

SELECT * FROM inventory WHERE qty = 25;

2. db.inventory.find({ tags : "gel”}) :

équivalent en SQL :

SELECT * FROM inventory WHERE tags = ‘gel’;

5
3. db.inventory.find({ size.h :27}):

Equivalent en SQL:

SELECT * FROM inventory WHERE size.h = 27;

4. db.inventory.find({ item : /^p/ }) :

Equivalent en SQL:

SELECT * FROM inventory WHERE item LIKE 'p%';

6
5. db.inventory.find({ qty : 25 }, { item : 1 }):

Equivalent en SQL:

SELECT item FROM inventory WHERE qty = 25;

6. db.inventory.find({ qty : { $lt: 30 } }) :

Equivalent en SQL:

SELECT * FROM inventory WHERE qty < 30;

7
7. db.inventory.find({ qty : { $gt: 30 } }) :

Equivalent en SQL:

SELECT * FROM inventory WHERE qty > 30;

8. db.inventory.find({ qty : { $lt: 30 } }).count() :

Equivalent en SQL:

SELECT COUNT(*) FROM inventory WHERE qty < 30;

9. db.inventory.find({ { status: "A" }, { qty: { $lte: 30 } } } :

Equivalent en SQL:

SELECT * FROM inventory WHERE status = 'A' AND qty <= 30;

8
10. db.inventory.find({ $or: [ { status: "A" }, { qty: { $gte: 10 } } ] }:

Equivalent en SQL:

SELECT * FROM inventory WHERE status = 'A' OR qty >= 10;

9
Modification :

1. db.inventory.updateOne({item:"paper"}, { $set: {"size.uom": "cm", status: "P"} }):

2. db.inventory.updateOne({ id:1}, { $unset: {nom:""} }):

Suppression :

db.inventory.deleteOne({ id:1}) :

10
7.1 Réplication

1. On crée deux instances du serveur sur la même machine, avec une base chacun.

2. Lançons maintenant les 2 serveurs, chacun sur un port. Ils forment le Replica Set rs00.

3. Connectons un client au premier serveur.

11
4. Et initialisons le RS

5. On peut alors ajouter le second noeud (remplacer localhost par le nom de la machine)

6. db.isMaster() : indique s’il s’agit du primary

12
7. rs.status() : informations complètes sur le replica set

8. Test d’insertion

9. On devrait trouver le document sur l’esclave

10. Que se passe-t-il? Et après rs.slaveOk()?

13
11. Tuons notre maître.

Question : le second va-t-il s'élire maître?

Oui , le second devient « master »

14
12. Relancer le premier serveur. Que se passe-t-il?

Il devient « esclave »

2.2Import d'un fichier :

15
3.1 Indexation

3.2 Requêtes Mongo


Exécuter les requêtes (find() ou Map/Reduce selon le cas) permettant de :
1. Compter les films dans lesquels joue l'acteur "DiCaprio"

2. Compter le nombre de films par acteur

3. Compter le nombre de _lms dont le genre est soit "Thriller" soit "drama".

16
4. Afficher les titres des films du genre "drama" par année

5. Trouver le nombre de films dans lesquels a joué "Clint Eastwood" et parus avant l'année 2000.

Exemples dans le cours :

Page 54

17
Page 57

18
19
20
Page 58

21
3.3 Jointure

1. Ecrivez les requêtes find() (sans Map/reduce) permettant de :


(a) Trouvez les titres des films réalisés par "Quentin Tarantino".

(b) Afficher pour chaque film, les informations sur son réalisateur.

(c) Afficher pour chaque réalisateur les titres de ses films.

22
2. En utilisant Map/reduce, faites la jointure entre un film
(a) et son réalisateur

(b) et ses acteurs

23
3.4 Map avec clé composée
Ecrivez les fonctions Map/Reduce permettant de trouver le graphe des artistes.

Cela créera un graphe qui représente les relations entre les artistes basées sur les films dans
lesquels ils ont joué ensemble. Chaque document dans la collection "artist_graph" représente
une relation entre deux artistes, et la valeur associée à la relation peut être utilisée pour
représenter la force ou la fréquence de leur collaboration.

24

Vous aimerez peut-être aussi