Python MongoDB - Rechercher
Vous pouvez lire / récupérer des documents stockés à partir de MongoDB en utilisant le find()méthode. Cette méthode récupère et affiche tous les documents de MongoDB de manière non structurée.
Syntaxe
Voici la syntaxe du find() méthode.
>db.CollectionName.find()
Exemple
Supposons que nous ayons inséré 3 documents dans une base de données nommée testDB dans une collection nommée sample en utilisant les requêtes suivantes -
> use testDB
> db.createCollection("sample")
> data = [
{"_id": "1001", "name" : "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "1002", "name" : "Rahim", "age" : 27, "city" : "Bangalore" },
{"_id": "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai" }
]
> db.sample.insert(data)
Vous pouvez récupérer les documents insérés en utilisant la méthode find () comme -
> use testDB
switched to db testDB
> db.sample.find()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
{ "_id" : "1002", "name" : "Rahim", "age" : 27, "city" : "Bangalore" }
{ "_id" : "1003", "name" : "Robert", "age" : 28, "city" : "Mumbai" }
>
Vous pouvez également récupérer le premier document de la collection en utilisant la méthode findOne () comme -
> db.sample.findOne()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }
Récupérer des données (rechercher) à l'aide de python
le find_One() La méthode de pymongo est utilisée pour récupérer un seul document basé sur votre requête, en cas d'absence de correspondance, cette méthode ne renvoie rien et si vous n'utilisez aucune requête, elle retourne le premier document de la collection.
Cette méthode est pratique chaque fois que vous devez récupérer un seul document d'un résultat ou, si vous êtes sûr que votre requête ne renvoie qu'un seul document.
Exemple
Exemple de python suivant pour récupérer le premier document d'une collection -
from pymongo import MongoClient
#Creating a pymongo client
client = MongoClient('localhost', 27017)
#Getting the database instance
db = client['mydatabase']
#Creating a collection
coll = db['example']
#Inserting document into a collection
data = [
{"_id": "101", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "102", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "103", "name": "Robert", "age": "28", "city": "Mumbai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
print(res.inserted_ids)
#Retrieving the first record using the find_one() method
print("First record of the collection: ")
print(coll.find_one())
#Retrieving a record with is 103 using the find_one() method
print("Record whose id is 103: ")
print(coll.find_one({"_id": "103"}))
Production
Data inserted ......
['101', '102', '103']
First record of the collection:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
Record whose id is 103:
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Pour obtenir plusieurs documents dans une seule requête (méthode de recherche d'appel unique), vous pouvez utiliser la find()méthode du pymongo. Si vous n'avez passé aucune requête, cela retourne tous les documents d'une collection et, si vous avez passé une requête à cette méthode, elle renvoie tous les documents correspondants.
Exemple
#Getting the database instance
db = client['myDB']
#Creating a collection
coll = db['example']
#Inserting document into a collection
data = [
{"_id": "101", "name": "Ram", "age": "26", "city": "Hyderabad"},
{"_id": "102", "name": "Rahim", "age": "27", "city": "Bangalore"},
{"_id": "103", "name": "Robert", "age": "28", "city": "Mumbai"}
]
res = coll.insert_many(data)
print("Data inserted ......")
#Retrieving all the records using the find() method
print("Records of the collection: ")
for doc1 in coll.find():
print(doc1)
#Retrieving records with age greater than 26 using the find() method
print("Record whose age is more than 26: ")
for doc2 in coll.find({"age":{"$gt":"26"}}):
print(doc2)
Production
Data inserted ......
Records of the collection:
{'_id': '101', 'name': 'Ram', 'age': '26', 'city': 'Hyderabad'}
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}
Record whose age is more than 26:
{'_id': '102', 'name': 'Rahim', 'age': '27', 'city': 'Bangalore'}
{'_id': '103', 'name': 'Robert', 'age': '28', 'city': 'Mumbai'}