Ressources Magic Makers

Mongo DB

C'est quoi Mongo DB

MongoDB est un outil qui permet de créer des bases de données (DataBase en anglais d’où le DB).

Une base de donnée est une structure qui permet de stocker plein d’informations. Dans MongoDB on peut créer une base de donnée dans laquelle on créé plein de dictionnaires python, et chaque donnée est un dictionnaire.

Dans une base de donnée on peut ajouter des éléments, en enlever, rechercher toutes les données qui ont une certaine valeur, etc. C’est très pratique et utile pour avoir plein d’informations et y accéder facilement.

Nos bases de données sont stockées en ligne ce qui permet que tout le monde puisse y accéder ou ajouter des données. Par exemple si on a une base de donnée utilisateur, on veut que n’importe qui puisse créer une donnée pour lui même et se créer un compte.

Utiliser Mongo DB

Pour utiliser MongoDB on commence par créer un cluster dans lequel on peut stocker autant de bases de données que l’on veut. Pour créer un cluster tu as besoin d’un compte MongoDB et voici un tuto pour bien créer son cluster (en anglais) et comment récupérer le lien de connexion.

Commence par importer la librairie flask_pymongo pour faire du MongoDB en python avec flask

from flask_pymongo import PyMongo

Puis il faut stocker l’accès au cluster pour ton application dans une variable avec la fonction PyMongo.

Ici app est la variable qui contient l'application

Dans le lien de connexion, ton mot de passe et ton identifiant apparaissent. Tu peux aller voir ici comment sécuriser tes données pour éviter que tout le monde y ait accès.

Créer et accèder à une base de données

Pour accéder à une base de donnée il suffit d’utiliser notre cluster et le nom de la base de donnée.

On accède à notre cluster, via la variable qui contient l’accès, puis on accède aux bases de données avec la variable db et enfin à notre base de donnée avec son nom et on stocke notre base de donnée dans une variable.

Ici j’accède à la base de donnée toto et la stocke dans la variable db_toto

Pour créer une base de donnée, c’est exactement pareil, on va essayer d’y accéder et si elle n’existe pas alors elle sera créée automatiquement.

Insérer une nouvelle donnée

Pour insérer une nouvelle donnée, il suffit d’utiliser la fonction insert_one sur notre base de donnée et de lui passer en paramètre le dictionnaire que l’on veut insérer.

Quand on insère une donnée pour la première fois, c’est une bonne pratique de noter les différents champs de la base de donnée, pour s’en souvenir pour les prochaines fois.

Attention, la fonction insert n’est plus maintenue, si tu trouve du code l’utilisant il faut la remplacer par insert_one

Récupérer des données

Il existe de multiples manières de récupérer les données selon ce que l’on veut faire. En voici quelques-unes.

Récupérer toutes les données

Pour récupérer toutes les données on utilise la fonction find sur un dictionnaire vide.

Récupérer toutes les données dont une clef a une certaine valeur

Pour récupérer toutes les données dont la clef à une certaine valeur on utilise la fonction find en précisant la clef et la valeur que l’on veut chercher.

Récupérer une donnée dont une clef a une certaine valeur

Cette fois on utilise la fonction find_one en précisant la clef et la valeur de l’on veut chercher

Récupérer toutes les données dont une clef contient un mot

Dans les deux cas précédents on cherche si la valeur est exactement la même. Là on veut juste qu’il y ait un mot qui apparaisse dans la valeur.

Pour cela on va d’abord dire que notre clef est une clef de type de texte avec la fonction create_index :

db_toto.create_index( [ ('champ', 'text' ) ] )

Puis on va faire une recherche sur toutes les clefs de type texte avec la syntaxe suivante :

resultat = db_nom_base.find( { '$text' : { '$search' : 'mot_a_chercher' }} )

Il existe plein d’autres manières de rechercher des données, et on peut faire plein d’autres choses, modifier des données , les trier, les supprimer etc. Pour découvrir toutes les fonctions utilisables tu peux consulter la doc :

https://api.mongodb.com/python/current/api/pymongo/collection.html

Supprimer une donnée

Pour supprimer une donnée, on va utiliser la fonction delete_one sur le champ et la valeur de son choix

Pour éviter de supprimer la mauvaise donnée, on peut utiliser la clef ‘_id’ qui est unique pour chaque donnée.

Quand on récupère la valeur de l’id, on peut avoir une chaine de caractère alors que le type de la valeur attendue est ObjectId. Pour transformer la chaine en ObjectId, il faut importer la librairie suivante

from bson.objectid import ObjectId

Et utiliser la fonction ObjectId sur la chaine de carractère