Trouver dans MongoDB
Nous apprendrons à récupérer des données d'une base de données MongoDB à l'aide de Python et du pilote PyMongo. Ce tutoriel couvre la connexion à un serveur MongoDB, l'interrogation de documents uniques et multiples, et le filtrage des résultats à l'aide d'opérateurs de comparaison et logiques.
Introduction
Python est largement utilisé pour le traitement des données et le développement backend. MongoDB est une base de données NoSQL populaire qui s'intègre parfaitement à Python pour un stockage et une récupération de données efficaces. Ce tutoriel explique comment interroger et récupérer des données de MongoDB à l'aide du pilote PyMongo.
Prérequis
Avant d'approfondir les détails de la recherche de données dans MongoDB avec Python, vous devez connaître les points suivants :
- Les bases de Python, y compris les types de données, les boucles et les fonctions.
- Une compréhension de MongoDB et de ses opérations de base.
- Le package
pymongoinstallé (pip install pymongo).
Connexion à MongoDB
La première étape pour trouver des données dans MongoDB avec Python consiste à établir une connexion avec le serveur MongoDB. MongoDB fournit un pilote Python que vous pouvez utiliser pour vous connecter à la base de données. Voici comment établir une connexion :
Connexion à MongoDB en Python
import pymongo
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]Dans le code ci-dessus, nous avons importé le module pymongo et créé un objet MongoClient pour établir une connexion avec le serveur MongoDB exécuté sur la machine locale. Nous avons ensuite créé une base de données nommée « mydatabase » et une collection nommée « customers ».
Remplissage de la collection
Avant d'interroger, insérons quelques documents d'exemple pour que les exemples fonctionnent :
mycol.insert_one({"name": "John", "age": 30})
mycol.insert_one({"name": "Jane", "age": 25})
mycol.insert_one({"name": "Doe", "age": 35})Remarque : PyMongo injecte automatiquement un champ _id unique dans chaque document inséré si aucun n'est fourni.
Recherche de données
Maintenant que nous avons établi une connexion avec le serveur MongoDB, nous pouvons rechercher des données dans la base de données à l'aide des différentes méthodes fournies par le pilote PyMongo. Voici certaines des méthodes les plus couramment utilisées :
find_one()
La méthode find_one() est utilisée pour récupérer le premier document correspondant aux critères de requête. Voici comment utiliser la méthode find_one() :
Rechercher un document dans MongoDB en Python
x = mycol.find_one()
print(x)Cela récupère le premier document de la collection « customers » et l'affiche dans la console.
find()
La méthode find() est utilisée pour récupérer tous les documents correspondant aux critères de requête. Voici comment utiliser la méthode find() :
Rechercher plusieurs documents dans MongoDB en Python
for x in mycol.find():
print(x)Cela récupère tous les documents de la collection « customers » et les affiche dans la console.
Interrogation des données
En plus des méthodes ci-dessus, nous pouvons également interroger des données à l'aide des différents opérateurs fournis par MongoDB. Voici certains des opérateurs les plus couramment utilisés :
- Égal à :
{"field": "value"} - Différent de :
{"field": {"$ne": "value"}} - Supérieur à :
{"field": {"$gt": "value"}} - Supérieur ou égal à :
{"field": {"$gte": "value"}} - Inférieur à :
{"field": {"$lt": "value"}} - Inférieur ou égal à :
{"field": {"$lte": "value"}} - Dans :
{"field": {"$in": ["value1", "value2", "value3"]}} - Pas dans :
{"field": {"$nin": ["value1", "value2", "value3"]}} - Et :
{"field1": "value1", "field2": "value2"}(Pour les conditions simples, l'ET implicite est préféré. Utilisez$anduniquement pour les conditions complexes, comme l'application de différents opérateurs au même champ.)
# ET implicite (conditions simples)
myquery = {"age": {"$gt": 25}, "name": "John"}
# Opérateur $and (conditions complexes, ex. même champ)
myquery = {"$and": [{"age": {"$gt": 25}}, {"age": {"$lt": 35}}]}- Ou :
{"$or": [{"field1": "value1"}, {"field2": "value2"}]}
Voici un exemple de la façon dont vous pouvez utiliser l'opérateur supérieur à pour récupérer tous les documents où le champ « age » est supérieur à 25 :
Interroger une collection MongoDB en Python
myquery = {"age": {"$gt": 25}}
results = mycol.find(myquery)
for x in results:
print(x)Cela crée une requête pour les documents où le champ « age » est supérieur à 25, la transmet à find() et affiche les résultats correspondants.
Tri et limitation des résultats
Vous pouvez trier les résultats à l'aide de sort() et limiter le nombre de documents retournés avec limit(). Vous pouvez également utiliser skip() pour paginer les résultats.
Tri et limitation dans MongoDB
# Trier par âge en ordre croissant, limiter à 2 résultats
results = mycol.find().sort("age", 1).limit(2)
for x in results:
print(x)Le deuxième argument dans sort() est 1 pour l'ordre croissant et -1 pour l'ordre décroissant.
Ignorer et limiter dans MongoDB
# Ignorer les 2 premiers documents, puis retourner les 2 suivants
results = mycol.find().skip(2).limit(2)
for x in results:
print(x)Conclusion
Dans cet article, nous avons discuté de la façon de trouver des données dans MongoDB avec Python. Nous avons commencé par établir une connexion avec le serveur MongoDB, suivie de la récupération de données à l'aide des différentes méthodes fournies par le pilote PyMongo. Nous avons également couvert comment interroger des données à l'aide des différents opérateurs fournis par MongoDB. En suivant les étapes décrites dans cet article, vous devriez maintenant être capable de trouver des données dans MongoDB avec Python de manière efficace.
Nous espérons que vous avez trouvé cet article informatif et utile. Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire ci-dessous. Merci d'avoir lu !