Python MongoDB - Tìm

Bạn có thể đọc / truy xuất các tài liệu đã lưu trữ từ MongoDB bằng cách sử dụng find()phương pháp. Phương thức này truy xuất và hiển thị tất cả các tài liệu trong MongoDB theo cách không có cấu trúc.

Cú pháp

Sau đây là cú pháp của find() phương pháp.

>db.COLLECTION_NAME.find()

Thí dụ

Giả sử chúng ta đã chèn 3 tài liệu vào cơ sở dữ liệu có tên testDB trong một bộ sưu tập có tên mẫu bằng cách sử dụng các truy vấn sau:

> 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)

Bạn có thể truy xuất các tài liệu đã chèn bằng phương thức find () như sau:

> 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" }
>

Bạn cũng có thể truy xuất tài liệu đầu tiên trong bộ sưu tập bằng phương thức findOne () như sau:

> db.sample.findOne()
{ "_id" : "1001", "name" : "Ram", "age" : "26", "city" : "Hyderabad" }

Truy xuất dữ liệu (tìm) bằng Python

Các find_One() phương thức pymongo được sử dụng để truy xuất một tài liệu dựa trên truy vấn của bạn, trong trường hợp không khớp, phương thức này sẽ không trả về kết quả nào và nếu bạn không sử dụng bất kỳ truy vấn nào, nó sẽ trả về tài liệu đầu tiên của bộ sưu tập.

Phương pháp này hữu ích bất cứ khi nào bạn chỉ cần truy xuất một tài liệu của một kết quả hoặc nếu bạn chắc chắn rằng truy vấn của mình chỉ trả về một tài liệu.

Thí dụ

Sau ví dụ python truy xuất tài liệu đầu tiên của một bộ sưu tập -

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"}))

Đầu ra

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'}

Để nhận nhiều tài liệu trong một truy vấn (phương pháp tìm od gọi duy nhất), bạn có thể sử dụng find()phương pháp pymongo. Nếu chưa vượt qua bất kỳ truy vấn nào, nó sẽ trả về tất cả các tài liệu của một bộ sưu tập và nếu bạn đã chuyển một truy vấn cho phương thức này, nó sẽ trả về tất cả các tài liệu phù hợp.

Thí dụ

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

Đầu ra

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'}