Dans ce TP, nous allons reprendre la base de données Gymnase2000 (disponible au format JSON
ici).
Mais nous allons utiliser ce script de connexion sous R
en utilisant la librairie rmongodb (les requêtes sont très ressemblantes à ce qu’on peut faire en direct sur la console) :
library(rmongodb)
# Création de la connextion
con = mongo.create(host = "172.19.32.10")
mongo.is.connected(con) # renvoie TRUE si c'est OK
# Liste des bases de données et des collections de la base "gym"
mongo.get.databases(con)
mongo.get.database.collections(con, "gym")
# Nombre de documents dans la collection "Sportifs" de la BD "gym"
mongo.count(con, "gym.Sportifs")
# Liste les valeurs distinctes de la variable "Sexe" de la collection "gym.Sportifs"
mongo.distinct(con, "gym.Sportifs", "Sexe")
# Retourne le premier document
mongo.find.one(con, "gym.Sportifs")
# Idem mais transformé en liste
mongo.bson.to.list(mongo.find.one(con, "gym.Sportifs"))
# Valeur de la variable "Nom" du résultat précédemment trouvé
mongo.bson.value(mongo.find.one(con, "gym.Sportifs"), "Nom")
# Liste de tous les documents
mongo.find.all(con, "gym.Sportifs")
# Idem mais dans un curseur
cursor = mongo.find(con, "gym.Sportifs")
while (mongo.cursor.next(cursor))
print(mongo.cursor.value(cursor))
# Liste des noms de toutes les sportives
mongo.find.all(
con, "gym.Sportifs",
query = '{ "Sexe": "F"}',
fields= '{ "_id": 0, "Nom": 1 }'
)
Il est impératif de répondre aux demandes sans utiliser le langage SQL.
Requêtes à créer
- Quels sont les sportifs (identifiant, nom et prénom) qui ont entre 20 et 30 ans ?
- Quels sont les gymnases de “Villetaneuse” ou de “Sarcelles” qui ont une surface de plus de 400 m2 ?
- Quels sont les sportifs (identifiant et nom) qui pratiquent du hand ball ?
- Dans quels gymnases et quels jours y a t-il des séances de hand ball ?
- Dans quels gymnases peut-on jouer au hockey le mercredi apres 15H ?
- Quels sportifs (identifiant et nom) ne pratiquent aucun sport ?
- Quels gymnases n’ont pas de séances le dimanche ?
- Quels gymnases ne proposent que des séances de basket ball ou de volley ball ?
- Quels sont les entraîneurs qui sont aussi joueurs ?
- Quels sont les sportifs qui sont des conseillers ?
- Pour le sportif “Kervadec” quel est le nom de son conseiller ?
- Quels entraîneurs entraînent du hand ball et du basket ball ?
- Quels sont les couples de sportifs (identifiant et nom et prénom de chaque) de même age ?
- Quelle est la moyenne d’âge des sportives qui pratiquent du basket ball ?
- Quels sont les sportifs les plus jeunes ?
- Quels sont les gymnases de “Stains” ou de “Montmorency” qui ont la plus grande surface ?
- Quels entraîneurs n’entraînent que du hand ball ou du basket ball ?
- Quels sont les couples de sportifs (identifiant et nom et prénom de chaque) de même âge avec le même conseiller ?
- Quels sportifs n’ont pas de conseillers ?
- Pour chaque sportif donner le nombre de sports qu’il arbitre
- Pour chaque gymnase de Stains donner par jour d’ouverture les horaires des premières et dernières séances
- Pour chaque entraîneurs de hand ball quel est le nombre de séances journalières qu’il assure ?
- Quels sont les gymnases ayant plus de 15 séances le mercredi ?
- Pour chaque gymnase de Montmorency : quel est le nombre de séances journalières de chaque sport propose ?
- Dans quels gymnases et quels jours y a t-il au moins 4 séances de volley ball dans la journée ?