cours-2022-2023 | Documents de mes cours pour l'année 2022-2023 | FX Jollois
A faire pour pouvoir utiliser l’outil sur votre ordinateur :
brew
si ce n’est pas encore faitmongo
pour l’obtenirJSON
Nous allons ici créer une première base de données, que l’on nommera test
, contenant une seule collection pour le moment, nommée restaurants
.
admin
, config
et local
test
restaurants
test
à gauche (et la collection restaurants
lorsque vous cliquez sur la petite flèche à droite de test
)Lorsque vous cliquez sur la collection, dans la base, vous voyez le détail de son contenu. Pour le moment, notre collection restaurants
est vide. Il n’y a donc rien. Il est possible d’importer des documents directement.
Nous allons importer maintenant les données dans notre collection ainsi créée. Vous devez avoir téléchargé le fichier restaurants.json
Une fois téléchargé, suivez la procédure suivante pour l’ajouter dans Mongo :
restaurants
pour voir le contenu de la collection (vide donc pour le moment)Votre première base est maitenant créée avec une collection de 25359 restaurants donc.
Nous allons maintenant vérifier que l’opération s’est bien déroulé et qu’on peut accéder à ces données dans le terminal Mongo.
show dbs
pour afficher les bases de données existantes
test
, taper la commande use test
show collections
pour voir les collections dans ces bases
db.restaurants.count()
Vous devriez donc avoir un résultat comme ci-dessous.
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.004GB
> use test
switched to db test
> show collections
restaurants
> db.restaurants.count()
25359
Certains des cours nécessitent l’utilisation de données AirBnB. Pour les utiliser sur votre ordinateur, vous devez déjà télécharger le fichier listingsAndReviews.json
(attention : ~110 Mo). Puis suivre les instructions ci-dessous.
listingsAndReviews
(par exemple), dans la base de données test
(par exemple)Le code ci-dessous permet de lire les données dans le fichier JSON puis de les insérer dans la collection listingsAndReviews
de la base test
. Les modifications sont nécessaires pour que les données numériques et dates soient bien prises en compte.
import pymongo
import json
from copy import deepcopy
from datetime import datetime
data = json.load(open("listingsAndReviews.json", "r"))
for i in range(len(airbnb)):
for e in ["price", "security_deposit", "cleaning_fee", "bathrooms", "extra_people", "guests_included"]:
if (data[i].get(e) is not None):
data[i][e] = float(data[i][e]["$numberDecimal"])
for d in ["last_scraped", "calendar_last_scraped", "first_review", "last_review"]:
if (data[i].get(d) is not None):
data[i][d] = datetime.strptime(data[i][d]["$date"], "%Y-%m-%dT%H:%M:%SZ")
client = pymongo.MongoClient()
db = client.test
db.airbnb.insert_many(data)