TP1 de client serveur
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.
DJYohann 7f07e10e81
📝 - add last query
2 years ago
README.md 📝 - add last query 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