RAYEN FAZAI 3iot2tp2 tp1+tp2
1. Installation de MongoDB
Téléchargez la version communautaire de MongoDB sur [Link].
Exécutez l'installation.
Après l'installation, ajoutez le répertoire mongodir/bin dans votre variable
d'environnement PATH.
Pour lancer le serveur MongoDB, exécutez la commande suivante dans le terminal :
mongod
Si PATH n'est pas configuré, placez-vous dans mongodir/bin avant d'exécuter cette
commande.
Le serveur devrait s'activer sur le port 27017 avec un message similaire à :
[initandlisten] waiting for connections on port 27017
2. Import d’un fichier dans MongoDB
Téléchargez le fichier [Link] depuis ce lien.
Pour importer ce fichier dans MongoDB, utilisez la commande mongoimport dans une
nouvelle fenêtre de terminal :
mongoimport -d dbtp -c movies --file c:\[Link] --jsonArray
Cette commande importe le contenu du fichier [Link] dans la collection movies de la
base de données dbtp.
3. Shell Mongo & Map/Reduce
3.1 Accès au Shell Mongo
Pour interagir avec MongoDB, vous pouvez utiliser le shell Mongo :
Lancez le shell en tapant :
mongo
La base par défaut est test. Pour accéder à la base dbtp, utilisez la commande :
use dbtp
3.2 Exécution des Requêtes
Compter les films dans lesquels joue l’acteur "DiCaprio"
[Link]({ "actors": "DiCaprio" })
Compter le nombre de films par acteur
[Link]([
{ $unwind: "$actors" },
{ $group: { _id: "$actors", totalFilms: { $sum: 1 } } }
])
Compter le nombre d’acteurs dirigés par chaque réalisateur
[Link]([
{ $unwind: "$actors" },
{ $group: { _id: { director: "$director", actor: "$actors" } } },
{ $group: { _id: "$_id.director", actorCount: { $sum: 1 } } }
])
Compter le nombre de films dont le genre est soit "Thriller" soit "Drama"
[Link]({ genre: { $in: ["Thriller", "Drama"] } })
Afficher les titres des films du genre "Drama" par année
[Link]({ genre: "Drama" }, { title: 1, year: 1 }).sort({ year: 1 })
Trouver le nombre de films dans lesquels a joué "Clint Eastwood" et parus avant l’année 2000
[Link]({ "actors": "Clint Eastwood", year: { $lt: 2000 } })
Compter les films par genre
[Link]([
{ $unwind: "$genre" },
{ $group: { _id: "$genre", totalFilms: { $sum: 1 } } }
])
Afficher les titres des films du genre "Drama" par année
[Link]([
{ $match: { genre: "Drama" } },
{ $sort: { year: 1 } },
{ $project: { title: 1, year: 1 } }
])
Map/Reduce
Compter les films par genre (Map/Reduce)
[Link](
function() { [Link](g => emit(g, 1)); },
function(key, values) { return [Link](values); },
{ out: "moviesByGenre" }
)
Compter le nombre de films par acteur (Map/Reduce)
[Link](
function() { [Link](a => emit(a, 1)); },
function(key, values) { return [Link](values); },
{ out: "moviesByActor" }
)
Afficher les titres des films du genre "Drama" par année (Map/Reduce)
[Link](
function() { if ([Link]("Drama")) emit([Link], [Link]); },
function(key, values) { return values; },
{ out: "dramaMoviesByYear" }
)