Python MongoDB tìm truy vấn

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ập mongo, 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 PyMongo

  • Tạ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ằng find()

kết quả = col. tìm ( {"một số trường". "TÌM TÔI. "} )

  • result được lưu trữ trong đối tượng pymongo.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 mongo2 để 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 mongo4. Sau đó, bạn sẽ có thể nhận được mongo2 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 mongo6 vào hàm mongo7 để 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 mongo2s

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

Python MongoDB tìm truy vấn

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ũ mongo9 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áp mongo9 và nó đủ để lấy số lượng tài liệu sau khi một find() 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 mongo9

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

Python MongoDB tìm truy vấn

  • Có hai cách để lấy thành công số lượng tài liệu. Sử dụng phương thức pip33 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ặp pip34, 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 pip33, 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, pip37 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ố)

Python MongoDB tìm truy vấn

  • Các yêu cầu pip38 của Python được hỗ trợ bởi một số truy vấn phương thức find()
  • 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 pip38
  • Khi bắt đầu tập lệnh, hãy nhập thư viện pip38 như thế này

>LƯU Ý. Ngoại lệ tích hợp sẵn của Python python-mongo2 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 pip38. Do đó, không chuyển số nguyên giá trị tháng trên python-mongo4 hoặc số nguyên ngày trên python-mongo5. 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-mongo6

  • Sau đó 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-mongo6 để 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-mongo9 và MongoClient0 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 MongoClient2 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ường MongoClient3

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 MongoClient4, MongoClient5 và MongoClient6, 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 MongoClient4, MongoClient5 và MongoClient6

  • Ngoà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 MongoClient4 có thể được tạo bằng nhiều dòng hoặc một dòng

  • Dưới đây là một truy vấn nhiều dòng, nhiều điều kiện với toán tử MongoClient4

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

Python MongoDB tìm truy vấn

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 pip38 để 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

Làm cách nào để sử dụng tìm kiếm trong MongoDB Python?

Để chọn dữ liệu từ một bảng trong MongoDB, chúng ta cũng có thể sử dụng phương thức find() . Phương thức find() trả về tất cả các lần xuất hiện trong vùng chọn. Tham số đầu tiên của phương thức find() là một đối tượng truy vấn. Trong ví dụ này, chúng tôi sử dụng một đối tượng truy vấn trống để chọn tất cả các tài liệu trong bộ sưu tập.

Truy vấn tìm hoạt động như thế nào trong MongoDB?

Phương thức find() trong MongoDB chọn tài liệu trong bộ sưu tập hoặc chế độ xem và trả về con trỏ cho tài liệu đã chọn . Nó có hai tham số. truy vấn và chiếu.

Làm cách nào để chuyển truy vấn MongoDB bằng Python?

Bạn có thể chuyển truy vấn chỉ định điều kiện cho các tài liệu được yêu cầu làm tham số cho phương thức này. .
nhà điều hành. Sau đây là danh sách các toán tử được sử dụng trong các truy vấn trong MongoDB. .
Ví dụ 1. Ví dụ sau truy xuất tài liệu trong một bộ sưu tập có tên là sarmista. .
đầu ra. Đã chèn dữ liệu. .
Ví dụ2. .
đầu ra

Làm cách nào để tìm trong mảng đối tượng trong MongoDB Python?

Để tìm kiếm mảng đối tượng trong MongoDB, bạn có thể sử dụng toán tử $elemMatch . Toán tử này cho phép chúng ta tìm kiếm nhiều hơn một thành phần từ một đối tượng mảng.