Aller au contenu

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 pymongo installé (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

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 :

python
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

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

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 $and uniquement pour les conditions complexes, comme l'application de différents opérateurs au même champ.)
python
# 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

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

python
# 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

python
# 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 !

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.