Khi bạn cần tìm thông tin trên tài liệu MongoDB, việc truy vấn đúng cách trở nên quan trọng. Bạn muốn có dữ liệu phù hợp nhanh nhất có thể để bạn có thể đưa ra quyết định đúng đắn. Có một số cách để tìm tài liệu MongoDB, tuy nhiên, tốt nhất bạn nên biết nên sử dụng cách nào để tiết kiệm thời gian. Ví dụ: bạn có thể muốn sử dụng yêu cầu truy vấn nhiều điều kiện để tìm tài liệu PyMongo. Sắp xếp dữ liệu cũng có thể hữu ích cho bạn. Tìm hiểu các kỹ thuật này nhiều hơn trong hướng dẫn này chỉ cho bạn cách truy vấn các tài liệu MongoDB bằng Python
điều kiện tiên quyết
- MongoDB – Xác minh rằng nó đã được cài đặt và đảm bảo rằng nó vẫn đang chạy. Để thực hiện việc này, hãy mở một cửa sổ đầu cuối và sử dụng lệnh
mongo --version
. Ngoài ra, khi đang ở trong cửa sổ đầu cuối, hãy nhậpmongo
, sau đó nhấn phím Quay lại
Python 3 – Xác nhận rằng bạn đã cài đặt nó và nó đang chạy. >Lưu ý. Python 2 sẽ sớm lỗi thời, vì vậy hãy tải xuống và cài đặt Pytyon 3 để thay thế
Trình điều khiển MongoDB Python – Cài đặt nó với trình quản lý gói
pip3
Tạo một thư mục tập lệnh Python
Chuẩn bị sẵn môi trường cho máy chủ MongoDB để sử dụng với Python. Tạo một thư mục cho tài liệu và các tệp liên quan của nó
>LƯU Ý. Đối với hướng dẫn này, chúng tôi sẽ sử dụng một ví dụ về dự án và gọi nó là python-mongo
Tạo các phiên bản lớp MongoDB sau khi nhập thư viện PyMongo
Nhập thư viện
MongoClient
PyMongoTạo phiên bản mới
từ pymongo nhập MongoClient
# Một phiên bản MongoDB cho Python
mongo_client = MongoClient['mongodb. //máy chủ cục bộ. 27017']
Tạo một phiên bản cơ sở dữ liệu MongoDB của PyMongo
- Truy vấn tài liệu với ví dụ. Sử dụng nó để truy cập bộ sưu tập và cơ sở dữ liệu
# Một thể hiện cơ sở dữ liệu
db = mongo_client. some_database
Tạo một phiên bản bộ sưu tập MongoDB của PyMongo
- Các bộ sưu tập cho cơ sở dữ liệu, hãy sẵn sàng truy vấn chúng bằng cách tạo một phiên bản
# Một ví dụ bộ sưu tập
col = db. some_collection
Một ví dụ cơ bản về truy vấn PyMongo của bộ sưu tập MongoDB
- Phương thức
find[]
vượt qua một từ điển Python trong ví dụ dưới đây. Lệnh gọi API sử dụng từ điển Python và lệnh này truy vấn tài liệu của bộ sưu tập MongoDB bằngfind[]
kết quả = col. tìm [ {"một số trường". "TÌM TÔI. "} ]
result
được lưu trữ trong đối tượngpymongo.cursor.Cursor
trả về tài liệu
- Một từ điển lồng nhau là những gì bạn sẽ thực hiện để truy vấn các tài liệu khớp một phần chuỗi. Một từ điển lồng nhau có hai phần. [1] từ điển bên ngoài là trường bạn đang truy vấn và [2] khóa từ điển bên trong là
"$regex"
# Một đối tượng từ điển truy vấn $regex
regex_query = { "trường ví dụ". {"$regex". "TRẬN ĐẤU CHUỖI MỘT PHẦN"} }
- Tiếp theo, sử dụng phương thức
find[]
để chuyển từ điển lồng nhau
kết quả = col. tìm [regex_query]
Sử dụng trình lặp Python để in từng tài liệu do MongoDB trả về
- Bạn có thể truy xuất tất cả các tài liệu nếu bạn lặp lại đối tượng
result
giống như một danh sách trong Python
cho tài liệu trong kết quả
in [doc]
- Tìm kết quả như thế này từ mọi tài liệu được trả về
{'_nhận dạng'. ObjectId['5ced203bd3c4454072c57040'], 'trường 1'. 'giá trị', 'trường 2'. 'giá trị'}
Nhận các giá trị và trường của tài liệu MongoDB
Lấy các trường và giá trị của tài liệu MongoDB. Bạn phải có quyền truy cập vào khóa mongo
2 để các tài liệu trong đối tượng pymongo.cursor.Cursor
có thể được trả về bởi trình vòng lặp
Cách truy cập trường “_id” của tài liệu MongoDB Python
- Lấy khóa của đối tượng lặp lại
mongo
4. Sau đó, bạn sẽ có thể nhận đượcmongo
2 của tài liệu
# lặp lại đối tượng Con trỏ được trả về
cho tài liệu trong kết quả
# in _id của tài liệu ra terminal
in ["doc _id. ", doc["_id"]]
Lấy danh sách đầy đủ các phương thức của kết quả cùng với các thuộc tính với đối tượng dict
- Xem mọi kết quả thuộc tính và phương thức từ đối tượng Con trỏ được trả về từ lệnh gọi API
# kết quả của lệnh gọi API có thể hiển thị cho bạn tất cả các thuộc tính của đối tượng Con trỏ
print["Con trỏ attr. ", kết quả. __dict__]
Truyền phương thức find[] của bộ sưu tập cho hàm list[] của Python để trả về danh sách tài liệu MongoDB
Chuyển toàn bộ lệnh gọi API mongo
6 vào hàm mongo
7 để nó trả về một danh sách chứa tất cả các tài liệu của bộ sưu tập [khớp với truy vấn] và dữ liệu tương ứng của chúng
Đây là một trình vòng lặp đi qua tất cả các đối tượng từ điển tài liệu đã được trả về trong một danh sách và nó in ra tài liệu tương ứng của chúng mongo
2s
# xây dựng từ điển Python cho truy vấn
truy vấn = {"tìm kiếm trường này". "tìm giá trị này"}
tài liệu = danh sách [col. tìm [truy vấn]]
cho tài liệu trong tài liệu
in ["\ndoc _id. ", doc["_id"]]
Lấy số lượng tài liệu được trả về sau khi bạn thực hiện truy vấn API MongoDB
- Hãy ghi nhớ, Python 2 sắp ra mắt và phiên bản 3. x của MongoDB sẽ trả về thông báo lỗi nếu bạn cố gắng sử dụng phương thức cũ
mongo
9 với nó. Các phiên bản cũ hơn như những phiên bản đã sử dụng phương phápmongo
9 và nó đủ để lấy số lượng tài liệu sau khi mộtfind[]
trả về một đối tượng Con trỏ
# một kết quả yêu cầu truy vấn
kết quả = col. tìm [some_query]
# phương thức đếm[]
print["số doc. ", kết quả. đếm[]]
- Một số nguyên cho số lượng tài liệu được truy vấn bởi lệnh gọi API đã được thực hiện bằng phương pháp
mongo
9
Ví dụ này cho thấy cách phương thức đếm[] cũ trả về Cảnh báo Khấu hao
Phương thức đếm [] của đối tượng Con trỏ không được dùng nữa kể từ v3. 1 của MongoDB
- Có hai cách để lấy thành công số lượng tài liệu. Sử dụng phương thức
pip3
3 và thực hiện một cuộc gọi khác đến đối tượng bộ sưu tập đó hoặc bằng cách đếm khi sử dụng trình vòng lặppip3
4, trình tạo Python, cho đối tượng kết quả
Cách sử dụng phương thức count_documents[]
- Với phương thức
pip3
3, thể hiện của bộ sưu tập là nơi bạn sẽ chuyển từ điển Python
doc_count = col. đếm_tài liệu [một số_query]
in ["doc_count. ", doc_count]
Cách lặp và đếm tài liệu
- làm điều này theo hai cách. khi bạn lặp lại đối tượng
result
đã được trả về, hãy theo dõi số lượng tài liệu. Ngoài ra,pip3
7 có thể đếm các tài liệu
cho num, doc trong liệt kê[kết quả]
in ["số,. ", số, "-- _id. ", doc["_id"]]
print["tổng tài liệu. ", số]
- Các yêu cầu
pip3
8 của Python được hỗ trợ bởi một số truy vấn phương thứcfind[]
- Chuỗi là định dạng cho các đối tượng ngày giờ mà PyMongo sử dụng. Tiếp theo, máy chủ MongoDB nhận các truy vấn được truyền từ thư viện
pip3
8
- Khi bắt đầu tập lệnh, hãy nhập thư viện
pip3
8 như thế này
>LƯU Ý. Ngoại lệ tích hợp sẵn của Python python-mongo
2 sẽ được nâng lên nếu bạn chuyển giá trị tháng hoặc ngày không chính xác cho đối tượng pip3
8. Do đó, không chuyển số nguyên giá trị tháng trên python-mongo
4 hoặc số nguyên ngày trên python-mongo
5. Nếu bạn làm điều đó do nhầm lẫn, bạn sẽ biết nguyên nhân gây ra lỗi và sau đó có thể khắc phục nó
Tạo một đối tượng datetime trước với phương thức
python-mongo
6Sau đó chuyển đổi nó thành một chuỗi
Tiếp theo, chuyển nó tới MongoDB
Sử dụng phương thức python-mongo
6 để tạo một đối tượng ngày giờ cho yêu cầu truy vấn tới phương thức find[]
của PyMongo. Đảm bảo chuyển đổi rõ ràng đối tượng datetime thành chuỗi trước khi chuyển sang từ điển truy vấn
# sử dụng dữ liệu HTTP đã phân tích cú pháp và tạo đối tượng ngày giờ mới
start_date = ngày giờ. ngày giờ [truy vấn_năm, truy vấn tháng, truy vấn_ngày]
# chuyển đổi nó một cách rõ ràng thành một chuỗi dữ liệu
ngày_bắt_đầu = str[ngày_bắt_đầu]
Giới thiệu về bộ chọn truy vấn $gte và gt MongoDB
- Bộ chọn truy vấn MongoDB cho bằng hoặc lớn hơn là
python-mongo
9 vàMongoClient
0 lớn hơn. Bộ chọn truy vấn được chuyển vào từ điển bên trong của từ điển Python lồng nhau
truy vấn = { "join_date". {"$gt". ngày_bắt_đầu} }
- Ví dụ bên dưới hiển thị truy vấn từ điển được chuyển vào phương thức
find[]
theo cách trực tiếp
# gọi phương thức find[] để thực hiện yêu cầu phạm vi ngày
kết quả = col. tìm [{"join_date". {"$gt". start_date}}]. sắp xếp ["tên"]
- Phương thức
MongoClient
2 sắp xếp các tài liệu được trả về dựa trên một trường cụ thể. Trong ví dụ trên, đó là trườngMongoClient
3
Cách sử dụng toán tử truy vấn Mongo MongoDB
Để sử dụng các toán tử truy vấn MongoDB MongoClient
4, MongoClient
5 và MongoClient
6, các quy tắc sau sẽ được áp dụng
Khóa từ điển bên ngoài phải là một trong các toán tử truy vấn
MongoClient
4,MongoClient
5 vàMongoClient
6Ngoài ra, các tham số từ điển phải nằm trong danh sách Python và danh sách Python đó phải là giá trị của khóa
Nhiều truy vấn điều kiện và yêu cầu PyMongo
Tập lệnh nhiều điều kiện của toán tử truy vấn
MongoClient
4 có thể được tạo bằng nhiều dòng hoặc một dòngDưới đây là một truy vấn nhiều dòng, nhiều điều kiện với toán tử
MongoClient
4
truy vấn = {
"$và"
[
{
"trường 1". "PHẢI PHÙ HỢP VỚI NÀY"
},
{
"trường 2". ". VÀ CÁI NÀY. "
}
]
}
- Dưới đây là cùng một truy vấn nhiều điều kiện chỉ với một dòng
truy vấn = {'$ và'. [{'trường 1'. 'PHẢI PHÙ HỢP VỚI NÀY'}, {'trường 2'. '. VÀ CÁI NÀY. '}]}
Truy vấn nhiều điều kiện và phương thức find[]
- Không có bước đặc biệt nào cho bước này. Loại truy vấn PyMongo này được chuyển giống như các truy vấn khác. Xem bên dưới
kết quả = col. tìm [truy vấn]. sắp xếp ["trường 1"]
Ví dụ hình ảnh về môi trường Python IDLE tạo yêu cầu truy vấn đa điều kiện PyMongo bằng phương thức find[] và toán tử truy vấn $or
Phần kết luận
Hướng dẫn này giải thích cách truy vấn MongoDB Python. Bạn đã học cách sử dụng phương pháp find[]
để tạo một yêu cầu truy vấn MongoDB trong một bộ sưu tập. Bạn cũng đã tìm hiểu về _____3_______9 lớn hơn hoặc bằng toán tử khi sử dụng phương pháp ___________ để định vị tài liệu MongoDB. Ngoài ra, bạn đã khám phá cách nhập thư viện pip3
8 để truy vấn tài liệu MongoDB Python. Chúng tôi đã xem qua truy vấn đa điều kiện và sắp xếp kết quả trả về. Còn nhiều điều nữa mà chúng tôi đã phát hiện ra trong hướng dẫn này sẽ giúp ích cho bạn trong các dự án MongoDB hiện tại và sắp tới của bạn
Để tham khảo thêm, hãy chuyển sang các ví dụ hiển thị bên dưới để truy vấn tài liệu MongoDB trong tập lệnh Python