Au ciné avec Mongo

[1h30]

Soit les données suivantes représentant des films de cinéma.

CTRL+C pour copier, CTRL+V pour coller
1
db.Cinema.drop()
2
3
db.Cinema.insert(
4
{
5
nom:"Goodfellas",
6
annee:1990,
7
realisateur:{nom:"Scorsese", prenom:"Martin"},
8
acteurs:
9
	[
10
	{nom:"De Niro", prenom:"Robert"},
11
	{nom:"Liotta", prenom:"Ray"},
12
	{nom:"Pesci", prenom:"Joe"}
13
	]
14
})
15
16
db.Cinema.insert(
17
{
18
nom:"The Godfather", 
19
annee:1972,
20
realisateur:{nom:"Coppola", prenom:"Francis Ford"},
21
acteurs: 
22
	[ 
23
	{nom:"Pacino", prenom:"Al"},
24
	{nom:"Brando", prenom:"Marlon"}, 
25
	{nom:"Duvall", prenom:"Robert"}
26
	]
27
})
28
29
db.Cinema.insert(
30
{
31
nom:"Million Dollar Baby",
32
realisateur:{nom:"Eastwood", prenom:"Clint"},
33
acteurs: 
34
	[ 
35
	{nom:"Swank", prenom:"Hilary"}, 
36
	{nom:"Eastwood", prenom:"Clint"}
37
	]
38
})
39
40
db.Cinema.insert(
41
{
42
nom:"Gran Torino",
43
annee:2008,
44
realisateur:{nom:"Eastwood", prenom:"Clint"},
45
acteurs: 
46
	[ 
47
	{nom:"Vang", prenom:"Bee"}, 
48
	{nom:"Eastwood", prenom:"Clint"}
49
	]
50
})
51
52
db.Cinema.insert(
53
{
54
nom:"Unforgiven",
55
realisateur:{nom:"Eastwood", prenom:"Clint"},
56
acteurs: 
57
	[ 
58
	{nom:"Hackman", prenom:"Gene"}, 
59
	{nom:"Eastwood", prenom:"Clint"}
60
	]
61
})
62
63
db.Cinema.insert(
64
{
65
nom:"Mystic River",
66
realisateur:{nom:"Eastwood", prenom:"Clint"},
67
acteurs: 
68
	[ 
69
	 {nom:"Penn", prenom:"Sean"}, 
70
	 {nom:"Bacon", prenom:"Kevin"}
71
	]
72
})
73
74
db.Cinema.insert(
75
{
76
nom:"Honkytonk Man",
77
realisateur:{nom:"Eastwood", prenom:"Clint"},
78
annee:1982,
79
acteurs: 
80
	[ 
81
	 {nom:"Eastwood", prenom:"Kyle"},
82
	 {nom:"Bloom", prenom:"Verna"}
83
	]
84
})
85
86
db.Cinema.find()
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"}
	]
})

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 avec ce script, puis d'écrire les requêtes MongoDB permettant de répondre aux questions suivantes.

Question

Créer une nouvelle base MongoDB et exécuter le script. Nommez votre base par votre nom de famille ou votre login sur la machine par exemple.

Question

Quels sont les films sortis en 1990 ?

Question

Quels sont les films sortis avant 2000 ?

Question

Quels sont les films réalisés par Clint Eastwood ?

Question

Quels sont les films réalisés par quelqu'un prénommé Clint ?

Question

Quels sont les films réalisés par quelqu'un prénommé Clint avant 2000  ?

Question

Quels sont les films dans lesquels joue Clint Eastwood ?

Question

Quels sont les films dans lesquels joue un Eastwood ?

Question

Quels sont les noms des films dans lesquels joue un Eastwood ?

Question

Compléter le programme JavaScript suivant afin d'afficher les titre selon le format suivant :

CTRL+C pour copier, CTRL+V pour coller
1
- Million Dollar Baby
2
- Gran Torino
3
- Unforgiven
4
- Honkytonk Man
- Million Dollar Baby
- Gran Torino
- Unforgiven
- Honkytonk Man

On veut à présent ajouter une nouvelle collection permettant de gérer des utilisateurs et leurs préférences. Pour chaque utilisateur on gérera un pseudonyme, et une liste de films préférés avec une note allant de une à trois étoiles.

Question

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

On utilisera les identifiants des films pour les référencer.

Question

Critiquer cette insertion mobilisant les identifiants des films ? Pourquoi n'est ce pas reproductible ?

Question

Quels sont les utilisateurs qui aiment au moins un film avec 3 étoiles ?

Question

Quels sont les identifiants des films qui sont aimés au moins une fois avec 3 étoiles ?

Question

Pourquoi trouver les titres de ces films n'est pas simple avec Mongo ?

Question

Écrire le programme JavaScript permettant de récupérer la liste dédoublonnée des identifiants de films qui sont aimés au moins une fois avec 3 étoiles, puis d'afficher les titres des films correspondants.