You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
![]() |
2 years ago | |
---|---|---|
README.md | 2 years ago |
README.md
Client Serveur - TP1
💡 Introduction
Récupération des samples
curl https://github.com/neelabalan/mongodb-sample-dataset/blob/main/sample_mflix/movies.json --output movies.json
curl https://github.com/neelabalan/mongodb-sample-dataset/blob/main/sample_mflix/comments.json --output comments.json
Création de la base de données
use tp1
Création des collections
db.createCollection("movies");
db.createCollection("comments");
Import des fichiers JSON
mongoimport --collection movies movies.json --db tp1
mongoimport --collection comments comments.json --db tp1
💻 Queries
1 - Compter le nombre de Thriller présents en base (films qui possèdent au moins le genre Thriller)
db.movies.countDocuments({
genres: "Thriller"
});
ou
db.movies.aggregate([
{ $match: { genres: "Thriller" } },
{ $count: "Number of mvovies contains Thriller in genres" }
]);
ou
db.movies.find({
genres: "Thriller"
}).count();
2 - Trouver la liste des films qui contiennent le mot "ghost" dans leur titre
Case sensitive
db.movies.find({
title: /.*ghost.*/
});
Case insensitive
db.movies.find({
title: /.*ghost.*/i
});
3 - Trouver la liste des films qui contiennent le mot "ghost" dans leur titre et qui sont sortis après 2013
Case sensitive
db.movies.find({
title: /.*ghost.*/,
year: { $gt: 2013 },
});
Case insensitive
db.movies.find({
title: /.*ghost.*/i,
year: { $gt: 2013 },
});
4 - Trouver le film qui a gagné le plus de récompenses
db.movies.aggregate([
{
$match: { "awards.wins": { $exists: true } }
},
{
$sort: { "awards.wins": -1 }
},
{
$limit: 1
}
]);
ou
db.movies.find({
"awards.wins": { $exists: true }
}).sort({
"awards.wins": -1
}).limit(1);
5 - Trouver le plus vieux film de plus de 2 heures ayant une note inférieur à 2 sur la plateforme imdb
db.movies.aggregate([
{
$match: {
"runtime": { $exists: true },
"imdb.rating": { $exists: true },
"year": { $exists: true },
}
},
{
$match: {
"runtime": { $gt: 120 },
"imdb.rating": { $lt: 2 },
}
},
{
$sort: { "year": -1 }
},
{
$limit: 1
}
]);
6 - Modifier la requête précédente pour récupérer en même temps les commentaires.
db.movies.aggregate([
{
$match: {
"runtime": { $exists: true },
"imdb.rating": { $exists: true },
"year": { $exists: true },
}
},
{
$match: {
"runtime": { $gt: 120 },
"imdb.rating": { $lt: 2 },
}
},
{
$sort: { "year": -1 }
},
{
$limit: 1
},
{
$lookup: {
from: "comments",
localField: "_id",
foreignField: "movie_id",
as: "movie_comments"
}
}
]);
7 - Récupérer le nombre de films par pays ainsi que leurs titres.
db.movies.aggregate([
{
$match: {
"countries": { $exists: true }
}
},
{
$unwind: "$countries"
},
{
$group: {
_id: "$countries",
count: { $sum: 1 }
}
},
{
$sort: { "count": -1 }
}
]);
👨💻 Author
BREUIL Yohann
- GitHub: @DJYohann
- LinkedIn: @BREUIL Yohann