Thư viện python nào được sử dụng để giao tiếp với mongodb?

Sau sự lan rộng toàn cầu của internet, chúng tôi đang tạo dữ liệu với tốc độ chưa từng có. Vì việc thực hiện bất kỳ loại phân tích nào cũng sẽ yêu cầu chúng tôi thu thập/truy vấn dữ liệu cần thiết từ cơ sở dữ liệu, nên việc chúng tôi chọn đúng công cụ để truy vấn dữ liệu trở nên cực kỳ quan trọng. Do đó, chúng tôi không thể tưởng tượng mình sử dụng SQL để làm việc với khối lượng dữ liệu này vì mỗi truy vấn đơn lẻ sẽ rất tốn kém

Truy vấn cơ sở dữ liệu MongoDB bằng PyMongo

Đây chính xác là nơi MongoDB xuất hiện. MongoDB là một cơ sở dữ liệu phi cấu trúc lưu trữ dữ liệu dưới dạng tài liệu. Ngoài ra, MongoDB có thể xử lý khối lượng dữ liệu khổng lồ rất hiệu quả và là cơ sở dữ liệu NoSQL được sử dụng rộng rãi nhất vì nó cung cấp ngôn ngữ truy vấn phong phú và khả năng truy cập dữ liệu linh hoạt và nhanh chóng

Trong bài viết này, chúng ta sẽ xem nhiều ví dụ về cách truy vấn cơ sở dữ liệu MongoDB bằng PyMongo. Hơn nữa, chúng ta sẽ xem cách sử dụng toán tử so sánh và toán tử logic, biểu thức chính quy và kiến ​​thức cơ bản về quy trình tổng hợp

Bài viết này là phần tiếp theo của MongoDB trong Hướng dẫn Python cho người mới bắt đầu, nơi chúng tôi đề cập đến những thách thức của cơ sở dữ liệu phi cấu trúc, các bước cài đặt và hoạt động cơ bản của MongoDB. Vì vậy, nếu bạn là người hoàn toàn mới bắt đầu với MongoDB, tôi khuyên bạn nên xem qua bài viết đó trước

Mục lục

  1. PyMongo là gì?
  2. Các bước cài đặt
  3. Chèn dữ liệu vào cơ sở dữ liệu
  4. Truy vấn cơ sở dữ liệu
    1. Lọc dựa trên Trường
    2. Bộ lọc dựa trên Toán tử so sánh
    3. Bộ lọc dựa trên Toán tử logic
    4. Biểu thức chính quy
    5. đường ống tổng hợp
  5. Ghi chú kết thúc

PyMongo là gì?

PyMongo là một thư viện Python cho phép chúng tôi kết nối với MongoDB. Hơn nữa, đây là cách được khuyên dùng nhất để làm việc với MongoDB và Python

Ngoài ra, chúng tôi đã chọn Python để tương tác với MongoDB vì đây là một trong những ngôn ngữ được sử dụng phổ biến nhất và mạnh mẽ nhất cho khoa học dữ liệu. PyMongo cho phép chúng tôi truy xuất dữ liệu bằng cú pháp giống như từ điển

Trong trường hợp bạn là người mới bắt đầu học Python, tôi khuyên bạn nên đăng ký khóa học miễn phí này. Giới thiệu về Python

Các bước cài đặt

Cài đặt PyMongo rất đơn giản và dễ hiểu. Ở đây, tôi giả sử bạn đã cài đặt Python 3 và MongoDB. Lệnh sau sẽ giúp bạn cài đặt PyMongo

pip3 install pymongo

Chèn dữ liệu vào Cơ sở dữ liệu

Bây giờ chúng ta hãy thiết lập mọi thứ trước khi truy vấn cơ sở dữ liệu MongoDB bằng PyMongo. Đầu tiên chúng ta sẽ chèn dữ liệu vào cơ sở dữ liệu. Các bước sau đây sẽ giúp bạn trong việc này-

  1. Nhập thư viện và kết nối với mongo client

    Khởi động máy chủ MongoDB trên máy của bạn. Tôi cho rằng nó đang chạy tệp tại localhost. 27017

    Hãy bắt đầu bằng cách nhập một số thư viện mà chúng ta sẽ sử dụng. Theo mặc định, máy chủ MongoDB chạy ở cổng 27017 trên máy cục bộ. Sau đó, chúng tôi sẽ kết nối với máy khách MongoDB bằng thư viện pymongo

    Sau đó lấy phiên bản cơ sở dữ liệu của cơ sở dữ liệu sample_db. Trong trường hợp nó không tồn tại, MongoDB sẽ tạo một cái cho bạn

    Mã Python

  2. Tạo Bộ sưu tập từ các tệp JSON

    Chúng tôi sẽ sử dụng dữ liệu từ một công ty giao bữa ăn hoạt động ở nhiều thành phố. Ngoài ra, họ có nhiều trung tâm thực hiện khác nhau ở các thành phố này để gửi các đơn đặt hàng bữa ăn cho khách hàng của họ. Bạn có thể tải xuống dữ liệu và mã tại đây

    1. tuần_nhu cầu
      • Tôi. ID duy nhất cho mỗi tài liệu
      • tuần. Số tuần
      • center_id. ID duy nhất cho trung tâm thực hiện
      • bữa ăn_id. ID duy nhất cho bữa ăn
      • checkout_price. Giá cuối cùng bao gồm chiết khấu, thuế và phí giao hàng
      • base_price. Giá cơ bản của bữa ăn
      • emailer_for_promotion. Gửi email quảng cáo bữa ăn
      • trang chủ_đặc trưng. Bữa ăn nổi bật tại trang chủ
      • num_orders. [Mục tiêu] Số lượng đơn đặt hàng
    2. bữa ăn_info
      • bữa ăn_id. ID duy nhất cho bữa ăn
      • thể loại. Loại bữa ăn [đồ uống/đồ ăn nhẹ/súp…. ]
      • ẩm thực. Ẩm thực bữa ăn [Ấn Độ/Ý/…]

    Sau đó, chúng tôi sẽ tạo hai bộ sưu tập trong cơ sở dữ liệu sample_db

  3. Chèn dữ liệu vào Bộ sưu tập

    Bây giờ, dữ liệu chúng tôi có ở định dạng JSON. Sau đó, chúng tôi sẽ lấy phiên bản của bộ sưu tập, đọc tệp dữ liệu và chèn dữ liệu bằng hàm insert_many

Cuối cùng, chúng tôi có 456548 tài liệu trong bộ sưu tập_nhu cầu hàng tuần và 51 tài liệu trong bộ sưu tập thông tin bữa ăn. Bây giờ, chúng ta hãy xem một tài liệu từ mỗi bộ sưu tập này

Weekly_demand_collection

bữa ăn_info_collection

Bây giờ, dữ liệu của chúng tôi đã sẵn sàng. Hãy chuyển sang truy vấn cơ sở dữ liệu này

Truy vấn cơ sở dữ liệu

Chúng ta có thể truy vấn cơ sở dữ liệu MongoDB bằng PyMonfo với hàm find để nhận tất cả các kết quả thỏa mãn điều kiện đã cho và cũng sử dụng hàm find_one sẽ chỉ trả về một kết quả thỏa mãn điều kiện

Sau đây là cú pháp của find và find_one

your_collection.find[ {>} , { >} ]

Bạn có thể truy vấn cơ sở dữ liệu bằng các kỹ thuật lọc sau-

  1. Lọc dựa trên các trường

    Chẳng hạn, bạn có hàng trăm trường và bạn chỉ muốn xem một vài trường trong số đó. Bạn có thể làm điều đó bằng cách đặt tất cả các tên trường bắt buộc với giá trị 1. Ví dụ-

    Mặt khác, nếu bạn chỉ muốn loại bỏ một vài trường khỏi toàn bộ tài liệu, bạn có thể đặt tên trường bằng 0. Do đó, chỉ những trường đó sẽ bị loại trừ. Xin lưu ý rằng bạn không thể sử dụng kết hợp các số 1 và 0 để lấy các trường. Tất cả phải là một hoặc tất cả phải bằng không

  2. Lọc theo điều kiện

    Bây giờ, trong phần này, chúng ta sẽ cung cấp một điều kiện trong dấu ngoặc nhọn đầu tiên và các trường cần loại bỏ trong dấu ngoặc nhọn thứ hai. Do đó, nó sẽ trả về tài liệu đầu tiên với center_id bằng 55 và meal_id bằng 1885 và cũng sẽ loại bỏ các trường _id và tuần

  3. Bộ lọc dựa trên Toán tử so sánh

    Sau đây là chín toán tử so sánh trong MongoDB

    NAMEDESCRIPTION____11Nó sẽ khớp với các giá trị bằng với một giá trị đã chỉ định.
    your_collection.find[ {>} , { >} ]
    2Nó sẽ khớp với các giá trị lớn hơn một giá trị được chỉ định.
    your_collection.find[ {>} , { >} ]
    3Nó sẽ khớp với tất cả các giá trị lớn hơn hoặc bằng một giá trị đã chỉ định.
    your_collection.find[ {>} , { >} ]
    4Nó sẽ khớp với bất kỳ giá trị nào được chỉ định trong một mảng.
    your_collection.find[ {>} , { >} ]
    5Nó sẽ khớp với tất cả các giá trị nhỏ hơn một giá trị được chỉ định.
    your_collection.find[ {>} , { >} ]
    6Nó sẽ khớp với tất cả các giá trị nhỏ hơn hoặc bằng một giá trị đã chỉ định.
    your_collection.find[ {>} , { >} ]
    7Nó sẽ khớp với tất cả các giá trị không bằng một giá trị đã chỉ định.
    your_collection.find[ {>} , { >} ]
    0Nó sẽ không khớp với bất kỳ giá trị nào được chỉ định trong một mảng

    Sau đây là một số ví dụ về việc sử dụng các toán tử so sánh này-

    1. Bằng và Không bằng

      Chúng tôi sẽ tìm tất cả các tài liệu trong đó center_id bằng 55 và homepage_featured không bằng 0. Vì chúng ta sẽ sử dụng hàm find nên nó sẽ trả về con trỏ cho lệnh đó. Hơn nữa, sử dụng vòng lặp for để lặp qua các kết quả của truy vấn

    2. Trong danh sách và không có trong danh sách

      Chẳng hạn, bạn cần ghép một phần tử với nhiều phần tử. Trong trường hợp đó, thay vì sử dụng toán tử $eq nhiều lần, chúng ta có thể sử dụng toán tử $in. Chúng tôi sẽ cố gắng tìm ra tất cả các tài liệu mà center_id là 24 hoặc 11

      Sau đó, chúng tôi tìm tất cả các tài liệu mà center_id không có trong danh sách đã chỉ định. Truy vấn sau đây sẽ trả về tất cả các tài liệu trong đó center_id không phải là 24 và cũng không phải là 11

    3. Nhỏ hơn và Lớn hơn

      Bây giờ, chúng ta hãy tìm tất cả các tài liệu có center_id là 55 và checkout_price lớn hơn 100 và nhỏ hơn 200. Sử dụng cú pháp sau cho điều này-

  4. Bộ lọc dựa trên Toán tử logic

    NAMEDESCRIPTION_______11Nó sẽ nối các mệnh đề truy vấn với một
    your_collection.find[ {>} , { >} ]
    2 logic và trả về tất cả các tài liệu khớp với cả hai điều kiện.
    your_collection.find[ {>} , { >} ]
    3Nó sẽ đảo ngược tác dụng của truy vấn và trả về tài liệu không khớp với biểu thức truy vấn.
    your_collection.find[ {>} , { >} ]
    4Nó sẽ nối các mệnh đề truy vấn với một
    your_collection.find[ {>} , { >} ]
    5 logic và trả về tất cả các tài liệu không khớp với các mệnh đề.
    your_collection.find[ {>} , { >} ]
    6Nó sẽ nối các mệnh đề truy vấn với một
    your_collection.find[ {>} , { >} ]
    7 logic và trả về tất cả các tài liệu khớp với điều kiện của một trong hai mệnh đề

    Các ví dụ sau minh họa việc sử dụng các toán tử logic-

    1. Toán tử AND

      Truy vấn sau đây sẽ trả về tất cả các tài liệu trong đó center_id bằng 11 và cả meal_id không bằng 1778. Các truy vấn con cho toán tử và sẽ nằm trong một danh sách

    2. Toán tử HOẶC

      Truy vấn sau đây sẽ trả về tất cả các tài liệu có center_id bằng 11 hoặc meal_id bằng 1207 hoặc 2707. Hơn nữa, các truy vấn con cho toán tử hoặc sẽ nằm trong danh sách

  5. Lọc bằng biểu thức chính quy

    Biểu thức chính quy rất hữu ích khi bạn có các trường văn bản và bạn muốn tìm kiếm các tài liệu có mẫu cụ thể. Trong trường hợp bạn muốn tìm hiểu thêm về biểu thức chính quy, tôi thực sự khuyên bạn nên xem qua bài viết này. Hướng dẫn cho người mới bắt đầu về biểu thức chính quy trong Python

    Nó có thể được sử dụng với toán tử $regex và chúng tôi có thể cung cấp giá trị cho toán tử cho mẫu biểu thức chính quy cho matc. Chúng tôi sẽ sử dụng bộ sưu tập meal_info cho truy vấn này và sau đó chúng tôi sẽ tìm các tài liệu mà trường ẩm thực bắt đầu bằng ký tự C

    Hãy lấy một ví dụ khác về biểu thức chính quy. Chúng ta sẽ tìm hiểu tất cả các tài liệu trong đó danh mục bắt đầu từ ký tự “S” và ẩm thực kết thúc bằng “ian“

  6. đường ống tổng hợp

    Đường dẫn tổng hợp của MongoDB cung cấp một khung để thực hiện một loạt các chuyển đổi dữ liệu trên tập dữ liệu. Sau đây là cú pháp của nó

    your_collection.find[ {>} , { >} ]
    0

    Giai đoạn đầu tiên lấy bộ tài liệu hoàn chỉnh làm đầu vào và từ đó, mỗi giai đoạn tiếp theo lấy tập kết quả của phép biến đổi trước đó làm đầu vào cho giai đoạn tiếp theo và tạo ra đầu ra

    Có khoảng 10 biến đổi có sẵn trong tổng hợp MongoDB mà chúng ta sẽ thấy $match và $group trong bài viết này. Chúng ta sẽ thảo luận chi tiết về từng biến đổi trong bài viết sắp tới của MongoDB

    Ví dụ giai đoạn đầu chúng ta sẽ so khớp những tài liệu có center_id bằng 11 và giai đoạn tiếp theo sẽ đếm số tài liệu có center_id bằng 11. Lưu ý rằng chúng ta đã gán cho toán tử $count giá trị bằng với total_rows trong giai đoạn thứ hai, đó là tên của trường mà chúng ta muốn ở đầu ra

    Bây giờ, hãy lấy một ví dụ khác trong đó giai đoạn đầu tiên giống như trước khi tôi. e. center_id bằng 11 và trong giai đoạn thứ hai, chúng tôi muốn tính giá trị trung bình của trường num_orders cho center_id 11 và các meal_id duy nhất cho center_id 11

Ghi chú kết thúc

Lượng dữ liệu khổng lồ được tạo ra ngày nay khiến việc tìm các giải pháp thay thế tốt hơn như thế này để truy vấn dữ liệu trở nên cần thiết. Tóm lại, trong bài viết này, chúng ta đã học cách truy vấn cơ sở dữ liệu MongoDB bằng PyMongo. Ngoài ra, chúng tôi hiểu cách áp dụng các bộ lọc khác nhau theo tình huống cần thiết

Trong trường hợp bạn muốn tìm hiểu thêm về truy vấn dữ liệu, tôi khuyên bạn nên tham gia khóa học sau - Ngôn ngữ truy vấn có cấu trúc [SQL] cho Khoa học dữ liệu

Trong bài viết sắp tới, chúng ta sẽ thảo luận chi tiết về các đường ống tổng hợp

Tôi khuyến khích bạn tự mình thử mọi thứ và chia sẻ kinh nghiệm của bạn trong phần bình luận. Ngoài ra, nếu bạn gặp phải bất kỳ vấn đề nào với bất kỳ khái niệm nào ở trên, vui lòng hỏi tôi trong phần bình luận bên dưới

Làm cách nào để kết nối với MongoDB bằng Python?

Để kết nối với MongoDB từ Ứng dụng Python, hãy làm theo hướng dẫn từng bước bên dưới. .
Cài đặt trình điều khiển Python – PyMongo. PyMongo chứa các công cụ để làm việc với MongoDB. .
Nhập MongoClient từ pymongo. .
Tạo kết nối đến MongoDB Daemon Service bằng MongoClient. .
MongoClient đã sẵn sàng. .
Đóng kết nối với MongoDB

Bạn có thể sử dụng MongoDB với Python không?

MongoDB là cơ sở dữ liệu hướng tài liệu được phân loại là NoSQL. Nó đã trở nên phổ biến trong toàn ngành trong những năm gần đây và tích hợp cực kỳ tốt với Python . Không giống như các RDBMS SQL truyền thống, MongoDB sử dụng các tập tài liệu thay vì các bảng hàng để tổ chức và lưu trữ dữ liệu.

Mô hình nào được sử dụng để kết nối với MongoDB?

Mô-đun MongoDB xuất MongoClient và đó là những gì chúng tôi sẽ sử dụng để kết nối với cơ sở dữ liệu MongoDB. Chúng ta có thể sử dụng một phiên bản của MongoClient để kết nối với một cụm, truy cập cơ sở dữ liệu trong cụm đó và đóng kết nối với cụm đó.

Trình điều khiển nào được sử dụng trong Python để hoạt động với MongoDB?

Bạn phải cài đặt mô-đun trình điều khiển PyMongo để cung cấp mô-đun này cho ứng dụng Python của bạn. Chúng tôi khuyên bạn nên sử dụng pip để cài đặt PyMongo. PyMongo yêu cầu dnspython hỗ trợ mongodb+srv. // chuỗi kết nối và MongoDB Atlas.

Chủ Đề