Hướng dẫn python mongoose equivalent - trăn cầy mangut tương đương

MongoDB là một giải pháp cơ sở dữ liệu theo định hướng tài liệu và NoQuery, cung cấp khả năng mở rộng và tính linh hoạt tuyệt vời cùng với một hệ thống truy vấn mạnh mẽ. Với MongoDB và Python, bạn có thể phát triển nhiều loại ứng dụng cơ sở dữ liệu khác nhau một cách nhanh chóng. Vì vậy, nếu ứng dụng Python của bạn cần một cơ sở dữ liệu mà Lôi linh hoạt như chính ngôn ngữ, thì MongoDB là dành cho bạn.

Show

Trong hướng dẫn này, bạn sẽ học:

  • MongoDB là gìMongoDB is
  • Cách cài đặt và chạy MongoDBinstall and run MongoDB
  • Cách làm việc với cơ sở dữ liệu MongoDBMongoDB databases
  • Cách sử dụng trình điều khiển pymongo cấp thấp để giao diện với MongoDBPyMongo driver to interface with MongoDB
  • Cách sử dụng Mapper đối tượng Mongoengine cấp cao (ODM)MongoEngine object-document mapper (ODM)

Trong suốt hướng dẫn này, bạn sẽ viết một vài ví dụ sẽ thể hiện sự linh hoạt và sức mạnh của MongoDB và hỗ trợ Python tuyệt vời của nó. Để tải xuống mã nguồn cho các ví dụ đó, nhấp vào liên kết bên dưới:

Sử dụng cơ sở dữ liệu SQL vs NoQuery

Trong nhiều thập kỷ, cơ sở dữ liệu SQL là một trong những lựa chọn duy nhất cho các nhà phát triển muốn xây dựng các hệ thống cơ sở dữ liệu lớn và có thể mở rộng. Tuy nhiên, nhu cầu ngày càng tăng trong việc lưu trữ các cấu trúc dữ liệu phức tạp đã dẫn đến sự ra đời của cơ sở dữ liệu NoQuery. Loại hệ thống cơ sở dữ liệu mới này cho phép các nhà phát triển lưu trữ dữ liệu không đồng nhất và không cấu trúc hiệu quả.NoSQL databases. This new kind of database system allows developers to store heterogeneous and structureless data efficiently.

Nói chung, các hệ thống cơ sở dữ liệu NoQuery lưu trữ và truy xuất dữ liệu theo một cách khác nhiều so với các hệ thống quản lý cơ sở dữ liệu quan hệ SQL (RDBMSS).

Khi nói đến việc lựa chọn từ các công nghệ cơ sở dữ liệu hiện có, bạn có thể cần quyết định giữa việc sử dụng các hệ thống SQL hoặc NoQuery. Cả hai đều có các tính năng cụ thể mà bạn nên xem xét khi chọn cái này hay cái khác. Dưới đây là một số khác biệt đáng kể hơn của họ:

Tài sảnCơ sở dữ liệu SQLCơ sở dữ liệu NoQuery
Mô hình dữ liệuQuan hệPhi truyền thống
Kết cấuDựa trên bảng, với các cột và hàngDựa trên tài liệu, các cặp giá trị khóa, đồ thị hoặc cột rộng
Lược đồMột lược đồ được xác định trước và nghiêm ngặt trong đó mọi bản ghi (hàng) đều có cùng bản chất và sở hữu các thuộc tính giống nhauMột lược đồ hoặc sơ đồ năng động có nghĩa là các hồ sơ không cần phải có cùng bản chất
Ngôn ngữ truy vấnNgôn ngữ truy vấn có cấu trúc (SQL)Thay đổi từ cơ sở dữ liệu đến cơ sở dữ liệu
Khả năng mở rộngTheo chiều dọcNằm ngang
Giao dịch axitĐược hỗ trợĐược hỗ trợ, tùy thuộc vào cơ sở dữ liệu NoQuery cụ thể
Khả năng thêm các thuộc tính mớiCần thay đổi lược đồ trướcCó thể mà không làm phiền bất cứ điều gì

Có nhiều sự khác biệt khác giữa hai loại cơ sở dữ liệu, nhưng những loại được đề cập ở trên là một số loại quan trọng hơn cần biết.

Khi chọn cơ sở dữ liệu, bạn nên xem xét điểm mạnh và điểm yếu của nó một cách cẩn thận. Bạn cũng cần xem xét cách cơ sở dữ liệu phù hợp với kịch bản cụ thể của bạn và các yêu cầu ứng dụng của bạn. Đôi khi giải pháp phù hợp là sử dụng kết hợp cơ sở dữ liệu SQL và NoQuery để xử lý các khía cạnh khác nhau của hệ thống rộng hơn.

Một số ví dụ phổ biến về cơ sở dữ liệu SQL bao gồm:

  • Sqlite
  • Mysql
  • Oracle
  • Postgresql
  • Microsoft SQL Server

Các ví dụ cơ sở dữ liệu NoQuery bao gồm:

  • Động lực học
  • Cassandra
  • Redis
  • Couchdb
  • Suy nghĩ lại
  • Ravendb
  • MongoDB

Trong những năm gần đây, cơ sở dữ liệu SQL và NoQuery thậm chí đã bắt đầu hợp nhất. Ví dụ: các hệ thống cơ sở dữ liệu, chẳng hạn như PostgreSQL, MySQL và Microsoft SQL Server hiện hỗ trợ lưu trữ và truy vấn dữ liệu JSON, giống như cơ sở dữ liệu NoQuery. Với điều này, bây giờ bạn có thể đạt được nhiều kết quả tương tự với cả hai công nghệ. Nhưng bạn vẫn không nhận được nhiều tính năng NoQuery, chẳng hạn như tỷ lệ ngang và giao diện thân thiện với người dùng.

Với nền tảng ngắn gọn này về cơ sở dữ liệu SQL và NoQuery, bạn có thể tập trung vào chủ đề chính của hướng dẫn này: cơ sở dữ liệu MongoDB và cách sử dụng nó trong Python.MongoDB database and how to use it in Python.

Quản lý cơ sở dữ liệu Noql với MongoDB

MongoDB là một cơ sở dữ liệu định hướng tài liệu được phân loại là NoQuery. 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ư SQL RDBMS truyền thống, MongoDB sử dụng các bộ sưu tập tài liệu thay vì các bảng hàng để tổ chức và lưu trữ dữ liệu.document-oriented database classified as NoSQL. It’s become popular throughout the industry in recent years and integrates extremely well with Python. Unlike traditional SQL RDBMSs, MongoDB uses collections of documents instead of tables of rows to organize and store data.

MongoDB lưu trữ dữ liệu trong các tài liệu giống như JSON và linh hoạt. Ở đây, sơ đồ có nghĩa là bạn có thể có tài liệu với một tập hợp các trường khác nhau trong cùng một bộ sưu tập, mà không cần phải đáp ứng một lược đồ bàn cứng nhắc.schemaless means that you can have documents with a different set of fields in the same collection, without the need for satisfying a rigid table schema.

Bạn có thể thay đổi cấu trúc của tài liệu và dữ liệu của mình theo thời gian, dẫn đến một hệ thống linh hoạt cho phép bạn nhanh chóng thích ứng với các thay đổi yêu cầu mà không cần một quy trình di chuyển dữ liệu phức tạp. Tuy nhiên, sự đánh đổi trong việc thay đổi cấu trúc của các tài liệu mới là việc thoát các tài liệu trở nên không phù hợp với lược đồ được cập nhật. Vì vậy, đây là một chủ đề cần được quản lý cẩn thận.

MongoDB được viết bằng C ++ và tích cực được phát triển bởi MongoDB Inc. Nó chạy trên tất cả các nền tảng chính, như MacOS, Windows, Solaris và hầu hết các bản phân phối Linux. Nhìn chung, có ba mục tiêu phát triển chính đằng sau cơ sở dữ liệu MongoDB:

  1. Quy mô tốt
  2. Lưu trữ cấu trúc dữ liệu phong phú
  3. Cung cấp một cơ chế truy vấn tinh vi

MongoDB là một cơ sở dữ liệu phân tán, vì vậy tính sẵn sàng cao, tỷ lệ ngang và phân phối địa lý được tích hợp vào hệ thống. Nó lưu trữ dữ liệu trong các tài liệu giống như JSON linh hoạt. Bạn có thể mô hình hóa các tài liệu này để ánh xạ các đối tượng trong các ứng dụng của bạn, điều này có thể hoạt động với dữ liệu của bạn một cách hiệu quả.distributed database, so high availability, horizontal scaling, and geographic distribution are built into the system. It stores data in flexible JSON-like documents. You can model these documents to map the objects in your applications, which makes it possible to work with your data effectively.

MongoDB cung cấp một ngôn ngữ truy vấn mạnh mẽ hỗ trợ các truy vấn ad hoc, lập chỉ mục, tổng hợp, tìm kiếm không gian địa lý, tìm kiếm văn bản và nhiều hơn nữa. Điều này giới thiệu cho bạn một bộ công cụ mạnh mẽ để truy cập và làm việc với dữ liệu của bạn. Cuối cùng, MongoDB có sẵn miễn phí và có hỗ trợ Python tuyệt vời.

Xem lại các tính năng của MongoDB

Cho đến nay, bạn đã học được MongoDB là gì và mục tiêu chính của nó là gì. Trong phần này, bạn sẽ tìm hiểu về một số tính năng quan trọng hơn của MongoDB. Đối với phía quản lý cơ sở dữ liệu, MongoDB cung cấp các tính năng sau:

  • Hỗ trợ truy vấn: Bạn có thể sử dụng nhiều loại truy vấn tiêu chuẩn, chẳng hạn như khớp (
    > use rptutorials
    switched to db rptutorials
    > db
    rptutorials
    > db.tutorial
    rptutorials.tutorial
    
    8), so sánh (
    > use rptutorials
    switched to db rptutorials
    > db
    rptutorials
    > db.tutorial
    rptutorials.tutorial
    
    9,
    {
       field1 → value1,
       field2 → value2,
       field3 → value3,
       ...
       fieldN → valueN
    }
    
    0) và các biểu thức thông thường.
    You can use many standard query types, such as matching (
    > use rptutorials
    switched to db rptutorials
    > db
    rptutorials
    > db.tutorial
    rptutorials.tutorial
    
    8), comparison (
    > use rptutorials
    switched to db rptutorials
    > db
    rptutorials
    > db.tutorial
    rptutorials.tutorial
    
    9,
    {
       field1 → value1,
       field2 → value2,
       field3 → value3,
       ...
       fieldN → valueN
    }
    
    0), and regular expressions.
  • Chỗ ở dữ liệu: Bạn có thể lưu trữ hầu như bất kỳ loại dữ liệu nào, có cấu trúc, có cấu trúc một phần hoặc thậm chí đa hình. You can store virtually any kind of data, be it structured, partially structured, or even polymorphic.
  • Khả năng mở rộng: Nó xử lý nhiều truy vấn hơn chỉ bằng cách thêm nhiều máy vào cụm máy chủ. It handles more queries just by adding more machines to the server cluster.
  • Tính linh hoạt và nhanh nhẹn: Bạn có thể phát triển các ứng dụng một cách nhanh chóng. You can develop applications with it quickly.
  • Định hướng và sơ đồ tài liệu: Bạn có thể lưu trữ tất cả các thông tin liên quan đến mô hình dữ liệu trong một tài liệu. You can store all the information regarding a data model in a single document.
  • Lược đồ có thể điều chỉnh: Bạn có thể thay đổi lược đồ của cơ sở dữ liệu một cách nhanh chóng, điều này làm giảm thời gian cần thiết để cung cấp các tính năng mới hoặc khắc phục các sự cố hiện có. You can change the schema of the database on the fly, which reduces the time needed to provide new features or fix existing problems.
  • Các chức năng cơ sở dữ liệu quan hệ: Bạn có thể thực hiện các hành động chung cho cơ sở dữ liệu quan hệ, như lập chỉ mục. You can perform actions common to relational databases, like indexing.

Đối với phía hoạt động, MongoDB cung cấp một vài công cụ và tính năng mà bạn đã giành được tìm thấy trong các hệ thống cơ sở dữ liệu khác:

  • Khả năng mở rộng: Cho dù bạn cần một máy chủ độc lập hoặc các cụm máy chủ độc lập hoàn chỉnh, bạn có thể mở rộng MongoDB đến bất kỳ kích thước nào bạn cần. Whether you need a stand-alone server or complete clusters of independent servers, you can scale MongoDB to whatever size you need it to be.
  • Hỗ trợ cân bằng tải: MongoDB sẽ tự động di chuyển dữ liệu trên các mảnh khác nhau. MongoDB will automatically move data across various shards.
  • Hỗ trợ chuyển đổi dự phòng tự động: Nếu máy chủ chính của bạn bị hỏng, thì một chính mới sẽ tự động chạy và chạy. If your primary server goes down, then a new primary will be up and running automatically.
  • Công cụ quản lý: Bạn có thể theo dõi các máy của mình bằng Dịch vụ Quản lý MongoDB dựa trên đám mây (MMS). You can track your machines using the cloud-based MongoDB Management Service (MMS).
  • Hiệu quả bộ nhớ: Nhờ các tệp được ánh xạ bộ nhớ, MongoDB thường hiệu quả hơn cơ sở dữ liệu quan hệ. Thanks to the memory-mapped files, MongoDB is often more efficient than relational databases.

Tất cả các tính năng này khá hữu ích. Ví dụ: nếu bạn tận dụng tính năng lập chỉ mục, thì phần lớn dữ liệu của bạn sẽ được lưu trong bộ nhớ để truy xuất nhanh. Ngay cả khi không lập chỉ mục các khóa tài liệu cụ thể, MongoDB đã lưu trữ khá nhiều dữ liệu bằng kỹ thuật được sử dụng gần đây nhất.

Cài đặt và chạy MongoDB

Bây giờ bạn đã quen thuộc với MongoDB, đã đến lúc làm bẩn tay và bắt đầu sử dụng nó. Nhưng trước tiên, bạn cần cài đặt nó trên máy của bạn. Trang web chính thức của MongoDB cung cấp hai phiên bản của máy chủ cơ sở dữ liệu:

  1. Phiên bản cộng đồng cung cấp mô hình tài liệu linh hoạt cùng với các truy vấn ad hoc, lập chỉ mục và tổng hợp thời gian thực để cung cấp các cách mạnh mẽ để truy cập và phân tích dữ liệu của bạn. Phiên bản này có sẵn miễn phí.
  2. Phiên bản Enterprise cung cấp các tính năng tương tự như phiên bản cộng đồng, cộng với các tính năng nâng cao khác liên quan đến bảo mật và giám sát. Đây là phiên bản thương mại, nhưng bạn có thể sử dụng nó miễn phí cho một thời gian không giới hạn cho mục đích đánh giá và phát triển.

Nếu bạn trên Windows, thì bạn có thể đọc qua hướng dẫn cài đặt để được hướng dẫn đầy đủ. Nói chung, bạn có thể truy cập trang tải xuống, chọn nền tảng Windows trong hộp tải xuống có sẵn, chọn trình cài đặt

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
1 phù hợp với hệ thống hiện tại của bạn và nhấp vào Tải xuống.

Chạy trình cài đặt và làm theo các hướng dẫn trên màn hình trên Trình hướng dẫn cài đặt. Trang này cũng cung cấp thông tin về cách chạy MongoDB dưới dạng dịch vụ Windows.

Nếu bạn trên macOS, thì bạn có thể sử dụng homebrew để cài đặt MongoDB trên hệ thống của mình. Xem hướng dẫn cài đặt để có được hướng dẫn đầy đủ. Ngoài ra, hãy đảm bảo làm theo hướng dẫn để chạy MongoDB như một dịch vụ MacOS.

Nếu bạn trên Linux, thì quá trình cài đặt sẽ phụ thuộc vào phân phối cụ thể của bạn. Để có hướng dẫn chi tiết về cách cài đặt MongoDB trên các hệ thống Linux khác nhau, hãy truy cập trang Hướng dẫn cài đặt và chọn hướng dẫn phù hợp với hệ điều hành hiện tại của bạn. Hãy chắc chắn rằng bạn chạy Daemon MongoDB,

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
2, ở cuối bản cài đặt.

Cuối cùng, bạn cũng có thể cài đặt MongoDB bằng Docker. Điều này rất tiện lợi nếu bạn không muốn làm lộn xộn hệ thống của mình với một cài đặt khác. Nếu bạn thích tùy chọn cài đặt này, thì bạn có thể đọc qua hướng dẫn chính thức và làm theo hướng dẫn của nó. Lưu ý rằng kiến ​​thức trước đây về cách sử dụng Docker sẽ được yêu cầu trong trường hợp này.

Với cơ sở dữ liệu MongoDB được cài đặt và chạy trên hệ thống của bạn, bạn có thể bắt đầu làm việc với cơ sở dữ liệu thực bằng cách sử dụng shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3.

Tạo cơ sở dữ liệu MongoDB với vỏ { field1 → value1, field2 → value2, field3 → value3, ... fieldN → valueN } 3

Nếu bạn đã làm theo hướng dẫn cài đặt và chạy, thì bạn đã có một thể hiện MongoDB chạy trên hệ thống của mình. Bây giờ bạn có thể bắt đầu tạo và kiểm tra cơ sở dữ liệu của riêng bạn. Trong phần này, bạn sẽ học cách sử dụng shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 để tạo, đọc, cập nhật và xóa tài liệu trên cơ sở dữ liệu.

Chạy vỏ { field1 → value1, field2 → value2, field3 → value3, ... fieldN → valueN } 3

Vỏ

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 là giao diện JavaScript tương tác với MongoDB. Bạn có thể sử dụng công cụ này để truy vấn và thao tác dữ liệu cũng như thực hiện các hoạt động quản trị. Vì nó là một giao diện JavaScript, bạn đã giành được ngôn ngữ SQL quen thuộc để truy vấn cơ sở dữ liệu. Thay vào đó, bạn sẽ sử dụng mã JavaScript.

Để khởi chạy shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3, hãy mở dòng thiết bị đầu cuối hoặc dòng lệnh của bạn và chạy lệnh sau:

Lệnh này đưa bạn đến vỏ

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3. Tại thời điểm này, bạn có thể thấy một loạt các tin nhắn có thông tin về phiên bản Shell Shell và trên địa chỉ và cổng nghiêm trọng. Cuối cùng, bạn sẽ được trình bày với dấu nhắc Shell (
{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
0) để nhập các truy vấn và lệnh.

Bạn có thể chuyển địa chỉ cơ sở dữ liệu như một đối số cho lệnh

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3. Bạn cũng có thể sử dụng một số tùy chọn, chẳng hạn như chỉ định máy chủ và cổng để truy cập cơ sở dữ liệu từ xa, v.v. Để biết thêm chi tiết về cách sử dụng lệnh
{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3, bạn có thể chạy
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
3.

Thiết lập một kết nối

Khi bạn chạy lệnh

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 mà không có đối số, nó sẽ khởi chạy shell và kết nối với máy chủ cục bộ mặc định được cung cấp bởi quy trình
{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
2 tại
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
6. Điều này có nghĩa là bạn đã kết nối với máy chủ cục bộ thông qua cổng
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7.

Theo mặc định, shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 bắt đầu phiên bằng cách thiết lập kết nối với cơ sở dữ liệu
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
9. Bạn có thể truy cập cơ sở dữ liệu hiện tại thông qua đối tượng
> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
0:

Trong trường hợp này,

> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
0 giữ một tham chiếu đến
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
9, đây là cơ sở dữ liệu mặc định. Để chuyển cơ sở dữ liệu, hãy phát hành lệnh
> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
3, cung cấp tên cơ sở dữ liệu dưới dạng đối số.

Ví dụ: giả sử bạn muốn tạo một trang web để xuất bản nội dung Python và bạn có kế hoạch sử dụng MongoDB để lưu trữ các hướng dẫn và bài viết của bạn. Trong trường hợp đó, bạn có thể chuyển sang cơ sở dữ liệu của trang web với lệnh sau:

> use rptutorials
switched to db rptutorials

Lệnh này chuyển kết nối của bạn sang cơ sở dữ liệu

> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
4. MongoDB không tạo ra tệp cơ sở dữ liệu vật lý trên hệ thống tệp cho đến khi bạn chèn dữ liệu thực vào cơ sở dữ liệu. Vì vậy, trong trường hợp này,
> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
4 won đã hiển thị trong danh sách cơ sở dữ liệu hiện tại của bạn:

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>

Shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 cung cấp rất nhiều tính năng và tùy chọn. Nó cho phép bạn truy vấn và thao tác dữ liệu của bạn và cũng để quản lý máy chủ cơ sở dữ liệu.

Thay vì sử dụng ngôn ngữ truy vấn được tiêu chuẩn hóa như SQL, shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 sử dụng ngôn ngữ lập trình JavaScript và API thân thiện với người dùng. API này cho phép bạn chơi xung quanh với dữ liệu của mình, đó là chủ đề cho phần tiếp theo.

Tạo bộ sưu tập và tài liệu

Cơ sở dữ liệu MongoDB là một thùng chứa vật lý cho các bộ sưu tập tài liệu. Mỗi cơ sở dữ liệu có bộ tệp riêng trên hệ thống tệp. Các tệp này được quản lý bởi máy chủ MongoDB, có thể xử lý một số cơ sở dữ liệu.

Trong MongoDB, một bộ sưu tập là một nhóm các tài liệu. Các bộ sưu tập có phần tương tự như các bảng trong một RDBM truyền thống, nhưng không áp đặt một lược đồ cứng nhắc. Về lý thuyết, mỗi tài liệu trong một bộ sưu tập có thể có một cấu trúc hoặc tập hợp các trường hoàn toàn khác nhau.collection is a group of documents. Collections are somewhat analogous to tables in a traditional RDBMS, but without imposing a rigid schema. In theory, each document in a collection can have a completely different structure or set of fields.

Trong thực tế, các tài liệu trong một bộ sưu tập thường chia sẻ một cấu trúc tương tự để cho phép truy xuất, chèn và cập nhật thống nhất. Bạn có thể thực thi cấu trúc tài liệu thống nhất bằng cách sử dụng các quy tắc xác thực tài liệu trong quá trình cập nhật và chèn.

Cho phép các cấu trúc tài liệu khác nhau là một tính năng chính của các bộ sưu tập MongoDB. Tính năng này cung cấp tính linh hoạt và cho phép thêm các trường mới vào các tài liệu mà không cần sửa đổi lược đồ bảng chính thức.

Để tạo một bộ sưu tập bằng cách sử dụng shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3, bạn cần trỏ
> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
0 vào cơ sở dữ liệu đích của mình và sau đó tạo các bộ sưu tập bằng ký hiệu DOT:dot notation:

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial

Trong ví dụ này, bạn sử dụng ký hiệu dấu chấm để tạo

> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
0 như một bộ sưu tập trong
> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
4, đó là cơ sở dữ liệu hiện tại của bạn. Điều quan trọng cần lưu ý là MongoDB tạo ra cơ sở dữ liệu và bộ sưu tập uể oải. Nói cách khác, họ chỉ được tạo ra về mặt vật lý sau khi bạn chèn tài liệu đầu tiên.lazily. In other words, they’re physically created only after you insert the first document.

Khi bạn có cơ sở dữ liệu và bộ sưu tập, bạn có thể bắt đầu chèn tài liệu. Tài liệu là đơn vị lưu trữ trong MongoDB. Trong một RDBMS, điều này sẽ tương đương với một hàng bảng. Tuy nhiên, các tài liệu MongoDB, linh hoạt hơn các hàng vì chúng có thể lưu trữ thông tin phức tạp, chẳng hạn như mảng, tài liệu nhúng và thậm chí các mảng tài liệu.

MongoDB lưu trữ các tài liệu theo định dạng gọi là nhị phân JSON (BSON), đây là một đại diện nhị phân của JSON. Các tài liệu MongoDB, bao gồm các cặp trường và giá trị và có cấu trúc sau:Binary JSON (BSON), which is a binary representation of JSON. MongoDB’s documents are composed of field-and-value pairs and have the following structure:

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}

Giá trị của một trường có thể là bất kỳ loại dữ liệu BSON nào, bao gồm các tài liệu, mảng và mảng tài liệu khác. Trong thực tế, bạn sẽ chỉ định các tài liệu của mình bằng định dạng JSON.

Khi bạn xây dựng một ứng dụng cơ sở dữ liệu MongoDB, có lẽ quyết định quan trọng nhất của bạn là về cấu trúc của các tài liệu. Nói cách khác, bạn sẽ phải quyết định trường và giá trị tài liệu của bạn sẽ có.

Trong trường hợp hướng dẫn cho trang web Python của bạn, các tài liệu của bạn có thể được cấu trúc như thế này:

{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}

Một tài liệu về cơ bản là một tập hợp các tên thuộc tính và giá trị của chúng. Các giá trị có thể là các loại dữ liệu đơn giản, chẳng hạn như chuỗi và số, nhưng chúng cũng có thể là các mảng như

> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
2 trong ví dụ trên.

Mô hình dữ liệu định hướng tài liệu MongoDB tự nhiên đại diện cho dữ liệu phức tạp như một đối tượng. Điều này cho phép bạn làm việc với các đối tượng dữ liệu một cách toàn diện, mà không cần nhìn vào một số nơi hoặc bảng.

Nếu bạn đang sử dụng RDBM truyền thống để lưu trữ các hướng dẫn của mình, thì có lẽ bạn sẽ có một bảng để lưu trữ các hướng dẫn của bạn và một bảng khác để lưu trữ những người đóng góp của bạn. Sau đó, bạn phải thiết lập mối quan hệ giữa cả hai bảng để bạn có thể truy xuất dữ liệu sau này.

Làm việc với các bộ sưu tập và tài liệu

Cho đến nay, bạn biết những điều cơ bản về cách chạy và sử dụng vỏ

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3. Bạn cũng biết cách tạo tài liệu của riêng bạn bằng định dạng JSON. Bây giờ, thời gian để học cách chèn tài liệu vào cơ sở dữ liệu MongoDB của bạn.

Để chèn tài liệu vào cơ sở dữ liệu bằng cách sử dụng shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3, trước tiên bạn cần chọn một bộ sưu tập và sau đó gọi
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
5 trên bộ sưu tập với tài liệu của bạn làm đối số:

> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}

Với lệnh đầu tiên, bạn chuyển sang cơ sở dữ liệu bạn muốn sử dụng. Lệnh thứ hai là một cuộc gọi phương thức JavaScript chèn một tài liệu đơn giản vào bộ sưu tập đã chọn,

> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
0. Khi bạn nhấn Enter, bạn sẽ nhận được một tin nhắn trên màn hình của bạn thông báo cho bạn về tài liệu mới được chèn và
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
7 của nó.Enter, you get a message on your screen that informs you about the newly inserted document and its
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
7.

Giống như cơ sở dữ liệu quan hệ cần một khóa chính để xác định duy nhất mỗi hàng trong bảng, các tài liệu MongoDB cần phải có trường

> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
8 xác định duy nhất tài liệu. MongoDB cho phép bạn nhập
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
8 tùy chỉnh miễn là bạn đảm bảo tính độc đáo của nó. Tuy nhiên, một thực tiễn được chấp nhận rộng rãi là cho phép MongoDB tự động chèn một
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
8 cho bạn.

Tương tự, bạn có thể thêm một số tài liệu trong một lần sử dụng

> db.tutorial.find()
{ "_id" : ObjectId("600747355e6ea8d224f754ba"),
"title" : "Reading and Writing CSV Files in Python",
"author" : "Jon",
"contributors" : [ "Aldren", "Geir Arne", "Joanna", "Jason" ],
"url" : "https://realpython.com/python-csv/" }
    ...

> db.tutorial.find({author: "Joanna"})
{ "_id" : ObjectId("60074ff05e6ea8d224f754bc"),
"title" : "Python 3's f-Strings: An Improved String Formatting Syntax (Guide)",
"author" : "Joanna",
"contributors" : [ "Adriana", "David", "Dan", "Jim", "Pavel" ],
"url" : "https://realpython.com/python-f-strings/" }
1:

> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}

Tại đây, cuộc gọi đến

> db.tutorial.find()
{ "_id" : ObjectId("600747355e6ea8d224f754ba"),
"title" : "Reading and Writing CSV Files in Python",
"author" : "Jon",
"contributors" : [ "Aldren", "Geir Arne", "Joanna", "Jason" ],
"url" : "https://realpython.com/python-csv/" }
    ...

> db.tutorial.find({author: "Joanna"})
{ "_id" : ObjectId("60074ff05e6ea8d224f754bc"),
"title" : "Python 3's f-Strings: An Improved String Formatting Syntax (Guide)",
"author" : "Joanna",
"contributors" : [ "Adriana", "David", "Dan", "Jim", "Pavel" ],
"url" : "https://realpython.com/python-f-strings/" }
1 lấy một danh sách các hướng dẫn và chèn chúng vào cơ sở dữ liệu. Một lần nữa, đầu ra shell hiển thị thông tin về các tài liệu mới được chèn và các trường
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
8 tự động của chúng.

Shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 cũng cung cấp các phương thức để thực hiện các hoạt động đọc, cập nhật và xóa trên cơ sở dữ liệu. Ví dụ: bạn có thể sử dụng
> db.tutorial.find()
{ "_id" : ObjectId("600747355e6ea8d224f754ba"),
"title" : "Reading and Writing CSV Files in Python",
"author" : "Jon",
"contributors" : [ "Aldren", "Geir Arne", "Joanna", "Jason" ],
"url" : "https://realpython.com/python-csv/" }
    ...

> db.tutorial.find({author: "Joanna"})
{ "_id" : ObjectId("60074ff05e6ea8d224f754bc"),
"title" : "Python 3's f-Strings: An Improved String Formatting Syntax (Guide)",
"author" : "Joanna",
"contributors" : [ "Adriana", "David", "Dan", "Jim", "Pavel" ],
"url" : "https://realpython.com/python-f-strings/" }
5 để truy xuất các tài liệu trong bộ sưu tập:

> db.tutorial.find()
{ "_id" : ObjectId("600747355e6ea8d224f754ba"),
"title" : "Reading and Writing CSV Files in Python",
"author" : "Jon",
"contributors" : [ "Aldren", "Geir Arne", "Joanna", "Jason" ],
"url" : "https://realpython.com/python-csv/" }
    ...

> db.tutorial.find({author: "Joanna"})
{ "_id" : ObjectId("60074ff05e6ea8d224f754bc"),
"title" : "Python 3's f-Strings: An Improved String Formatting Syntax (Guide)",
"author" : "Joanna",
"contributors" : [ "Adriana", "David", "Dan", "Jim", "Pavel" ],
"url" : "https://realpython.com/python-f-strings/" }

Cuộc gọi đầu tiên đến

> db.tutorial.find()
{ "_id" : ObjectId("600747355e6ea8d224f754ba"),
"title" : "Reading and Writing CSV Files in Python",
"author" : "Jon",
"contributors" : [ "Aldren", "Geir Arne", "Joanna", "Jason" ],
"url" : "https://realpython.com/python-csv/" }
    ...

> db.tutorial.find({author: "Joanna"})
{ "_id" : ObjectId("60074ff05e6ea8d224f754bc"),
"title" : "Python 3's f-Strings: An Improved String Formatting Syntax (Guide)",
"author" : "Joanna",
"contributors" : [ "Adriana", "David", "Dan", "Jim", "Pavel" ],
"url" : "https://realpython.com/python-f-strings/" }
5 lấy tất cả các tài liệu trong bộ sưu tập
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
0. Mặt khác, cuộc gọi thứ hai đến
> db.tutorial.find()
{ "_id" : ObjectId("600747355e6ea8d224f754ba"),
"title" : "Reading and Writing CSV Files in Python",
"author" : "Jon",
"contributors" : [ "Aldren", "Geir Arne", "Joanna", "Jason" ],
"url" : "https://realpython.com/python-csv/" }
    ...

> db.tutorial.find({author: "Joanna"})
{ "_id" : ObjectId("60074ff05e6ea8d224f754bc"),
"title" : "Python 3's f-Strings: An Improved String Formatting Syntax (Guide)",
"author" : "Joanna",
"contributors" : [ "Adriana", "David", "Dan", "Jim", "Pavel" ],
"url" : "https://realpython.com/python-f-strings/" }
5 lấy những hướng dẫn được tác giả bởi Joanna.

Với kiến ​​thức nền tảng này về cách sử dụng MongoDB thông qua vỏ

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 của nó, bạn đã sẵn sàng để bắt đầu sử dụng MongoDB với Python. Một vài phần tiếp theo sẽ hướng dẫn bạn qua các tùy chọn khác nhau để sử dụng cơ sở dữ liệu MongoDB trong các ứng dụng Python của bạn.

Sử dụng MongoDB với Python và Pymongo

Bây giờ bạn đã biết MongoDB là gì và cách tạo và quản lý cơ sở dữ liệu bằng cách sử dụng shell

{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3, bạn có thể bắt đầu sử dụng MongoDB, nhưng lần này với Python. MongoDB cung cấp một tài xế Python chính thức tên là Pymongo.

Trong phần này, bạn sẽ trải qua một số ví dụ về việc mà bạn sẽ giúp bạn có cảm giác về cách sử dụng pymongo để tạo các ứng dụng cơ sở dữ liệu của riêng bạn với MongoDB và Python.

Mỗi mô -đun trong Pymongo chịu trách nhiệm cho một tập hợp các hoạt động trên cơ sở dữ liệu. Bạn có thể có các mô -đun cho ít nhất các nhiệm vụ sau:

  • Thiết lập kết nối cơ sở dữ liệu
  • Làm việc với cơ sở dữ liệu
  • Làm việc với các bộ sưu tập và tài liệu
  • Thao túng con trỏ
  • Làm việc với mã hóa dữ liệu

Nói chung, Pymongo cung cấp một bộ công cụ phong phú mà bạn có thể sử dụng để giao tiếp với máy chủ MongoDB. Nó cung cấp chức năng để truy vấn, truy xuất kết quả, ghi và xóa dữ liệu và chạy các lệnh cơ sở dữ liệu.

Cài đặt pymongo

Để bắt đầu sử dụng pymongo, trước tiên bạn cần cài đặt nó trong môi trường Python của mình. Bạn có thể sử dụng môi trường ảo hoặc bạn có thể sử dụng cài đặt Python toàn hệ thống của mình, mặc dù tùy chọn đầu tiên được ưu tiên. Pymongo có sẵn trên PYPI, vì vậy cách nhanh nhất để cài đặt nó là với

$ pip install pymongo==3.11.2
1. Fun lên thiết bị đầu cuối của bạn và chạy lệnh sau:

$ pip install pymongo==3.11.2

Sau một vài lần tải xuống và các bước liên quan khác, lệnh này cài đặt Pymongo trên môi trường Python của bạn. Lưu ý rằng nếu bạn không cung cấp một số phiên bản cụ thể, thì

$ pip install pymongo==3.11.2
1 sẽ cài đặt phiên bản có sẵn mới nhất.

Khi bạn đã hoàn thành việc cài đặt, bạn có thể bắt đầu phiên tương tác Python và chạy nhập sau:

Nếu điều này chạy mà không tăng ngoại lệ trong vỏ Python, thì cài đặt của bạn hoạt động tốt. Nếu không, sau đó cẩn thận thực hiện các bước một lần nữa.

Thiết lập một kết nối

Để thiết lập kết nối với cơ sở dữ liệu, bạn cần tạo một thể hiện

$ pip install pymongo==3.11.2
3. Lớp này cung cấp một máy khách cho một phiên bản hoặc máy chủ MongoDB. Mỗi đối tượng máy khách có một nhóm kết nối tích hợp, theo mặc định xử lý tới một trăm kết nối với máy chủ.

Quay trở lại phiên tương tác Python của bạn và nhập

$ pip install pymongo==3.11.2
3 từ
$ pip install pymongo==3.11.2
5. Sau đó, tạo một đối tượng máy khách để giao tiếp với thể hiện MongoDB hiện đang chạy của bạn:

>>>

>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
0

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
1

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

Điều này rất tiện dụng khi bạn cần cung cấp

$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0 khác với thiết lập mặc định của MongoDB. Bạn cũng có thể sử dụng định dạng URI MongoDB:

Tất cả các trường hợp này của $ pip install pymongo==3.11.2 3 cung cấp cùng một thiết lập máy khách để kết nối phiên bản MongoDB hiện tại của bạn. Cái nào bạn nên sử dụng chỉ phụ thuộc vào mức độ rõ ràng của bạn trong mã của mình.

Khi bạn đã khởi tạo

$ pip install pymongo==3.11.2
3, bạn có thể sử dụng thể hiện của nó để tham khảo kết nối cơ sở dữ liệu cụ thể đó, giống như bạn đã làm với đối tượng
{
   field1 → value1,
   field2 → value2,
   field3 → value3,
   ...
   fieldN → valueN
}
3 Shell
> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
0 trong phần trên.

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
2

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

Điều này rất tiện dụng khi bạn cần cung cấp

$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0 khác với thiết lập mặc định của MongoDB. Bạn cũng có thể sử dụng định dạng URI MongoDB:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
3

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

Điều này rất tiện dụng khi bạn cần cung cấp

$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0 khác với thiết lập mặc định của MongoDB. Bạn cũng có thể sử dụng định dạng URI MongoDB:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
4

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
5

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
6

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

Điều này rất tiện dụng khi bạn cần cung cấp

$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0 khác với thiết lập mặc định của MongoDB. Bạn cũng có thể sử dụng định dạng URI MongoDB:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
7

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

Điều này rất tiện dụng khi bạn cần cung cấp

$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0 khác với thiết lập mặc định của MongoDB. Bạn cũng có thể sử dụng định dạng URI MongoDB:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
8

Mã trên thiết lập kết nối với máy chủ mặc định (

$ pip install pymongo==3.11.2
6) và cổng (
{
    "title": "Reading and Writing CSV Files in Python",
    "author": "Jon",
    "contributors": [
        "Aldren",
        "Geir Arne",
        "Joanna",
        "Jason"
    ],
    "url": "https://realpython.com/python-csv/"
}
7).
$ pip install pymongo==3.11.2
3 lấy một tập hợp các đối số cho phép bạn chỉ định máy chủ tùy chỉnh, cổng và các tham số kết nối khác. Ví dụ: để cung cấp một máy chủ và cổng tùy chỉnh, bạn có thể sử dụng mã sau:

Điều này rất tiện dụng khi bạn cần cung cấp

$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0 khác với thiết lập mặc định của MongoDB. Bạn cũng có thể sử dụng định dạng URI MongoDB:

>>>

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
9

Lưu ý rằng hướng dẫn từ ____ ____108 được đặt dưới khóa

> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
8, đây là mã định danh tài liệu duy nhất mà MongoDB tự động thêm khi bạn chèn tài liệu vào cơ sở dữ liệu của bạn.

Pymongo cũng cung cấp các phương pháp để thay thế, cập nhật và xóa tài liệu khỏi cơ sở dữ liệu. Nếu bạn muốn đi sâu hơn vào các tính năng này, thì hãy xem tài liệu cho

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
01.

Đóng kết nối

Thiết lập kết nối với cơ sở dữ liệu MongoDB thường là một hoạt động đắt tiền. Nếu bạn có một ứng dụng liên tục truy xuất và điều khiển dữ liệu trong cơ sở dữ liệu MongoDB, thì có lẽ bạn không muốn mở và đóng kết nối mọi lúc vì điều này có thể ảnh hưởng đến hiệu suất ứng dụng của bạn.

Trong loại tình huống này, bạn nên giữ kết nối của mình và chỉ đóng nó trước khi rời khỏi ứng dụng để xóa tất cả các tài nguyên có được. Bạn có thể đóng kết nối bằng cách gọi

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
25 trên ví dụ
$ pip install pymongo==3.11.2
3:

Một tình huống khác là khi bạn có một ứng dụng thỉnh thoảng sử dụng cơ sở dữ liệu MongoDB. Trong trường hợp này, bạn có thể muốn mở kết nối khi cần và đóng ngay sau khi sử dụng để giải phóng các tài nguyên có được. Một cách tiếp cận nhất quán cho vấn đề này sẽ là sử dụng tuyên bố

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
27. Có,
$ pip install pymongo==3.11.2
3 thực hiện giao thức Trình quản lý bối cảnh:

>>>

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
0

Nếu bạn sử dụng câu lệnh

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
27 để xử lý máy khách MongoDB của mình, thì vào cuối khối mã
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
27, phương thức máy khách ____ ____131 sẽ được gọi, đồng thời đóng kết nối bằng cách gọi
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
25.

Sử dụng MongoDB với Python và Mongoengine

Mặc dù Pymongo là một trình điều khiển Python tuyệt vời và mạnh mẽ để giao tiếp với MongoDB, nhưng nó có lẽ hơi quá thấp đối với nhiều dự án của bạn. Với Pymongo, bạn sẽ phải viết rất nhiều mã để liên tục chèn, truy xuất, cập nhật và xóa tài liệu.

Một thư viện cung cấp sự trừu tượng cao hơn trên đỉnh của pymongo là Mongoengine. MongoEngine là một bản đồ-tài liệu đối tượng (ODM), gần tương đương với một bản đồ liên quan đến đối tượng dựa trên SQL (ORM). Mongoengine cung cấp một bản tóm tắt dựa trên lớp, vì vậy tất cả các mô hình bạn tạo là các lớp.

Cài đặt Mongoengine

Có một số thư viện Python để giúp bạn làm việc với MongoDB. Mongoengine, tuy nhiên, là một bản phổ biến cung cấp một bộ tính năng, tính linh hoạt và hỗ trợ cộng đồng tốt đẹp. Mongoengine có sẵn trên PYPI. Bạn có thể cài đặt nó bằng lệnh

$ pip install pymongo==3.11.2
1 sau:

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
1

Khi bạn đã cài đặt MongoEngine vào môi trường Python của mình, bạn đã sẵn sàng để bắt đầu làm việc với cơ sở dữ liệu MongoDB bằng các tính năng hướng đối tượng Python. Bước tiếp theo là kết nối với thể hiện MongoDB đang chạy của bạn.

Thiết lập một kết nối

Để thiết lập kết nối với cơ sở dữ liệu của bạn, bạn cần sử dụng

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
34. Hàm này có một số đối số. Tuy nhiên, trong hướng dẫn này, bạn sẽ chỉ sử dụng ba trong số đó. Trong phiên tương tác Python của bạn, hãy nhập mã sau:

>>>

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
2

Ở đây, trước tiên bạn đặt tên cơ sở dữ liệu

> use rptutorials
switched to db rptutorials

> db.tutorial.insertOne({
...     "title": "Reading and Writing CSV Files in Python",
...     "author": "Jon",
...     "contributors": [
...         "Aldren",
...         "Geir Arne",
...         "Joanna",
...         "Jason"
...     ],
...     "url": "https://realpython.com/python-csv/"
... })
{
    "acknowledged" : true,
    "insertedId" : ObjectId("600747355e6ea8d224f754ba")
}
0 thành
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
36, là tên của cơ sở dữ liệu bạn muốn làm việc. Sau đó, bạn cung cấp một
$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0 để kết nối với thể hiện MongoDB hiện tại của bạn. Vì bạn sử dụng mặc định
$ pip install pymongo==3.11.2
9 và
>>> from pymongo import MongoClient
>>> client = MongoClient()
>>> client
MongoClient(host=['localhost:27017'], ..., connect=True)
0, bạn có thể bỏ qua hai tham số này và chỉ sử dụng
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
41.

Làm việc với các bộ sưu tập và tài liệu

Để tạo tài liệu với MongoEngine, trước tiên bạn cần xác định dữ liệu bạn muốn các tài liệu có. Nói cách khác, bạn cần xác định lược đồ tài liệu. Mongoengine khuyến khích bạn xác định lược đồ tài liệu để giúp bạn giảm lỗi mã hóa và cho phép bạn xác định các phương thức tiện ích hoặc trợ giúp.

Tương tự như Orms, ODM như Mongoengine cung cấp một lớp cơ sở hoặc mô hình để bạn xác định lược đồ tài liệu. Trong Orms, lớp đó tương đương với một bảng và các trường hợp của nó tương đương với các hàng. Trong Mongoengine, lớp tương đương với một bộ sưu tập và các trường hợp của nó tương đương với các tài liệu.

Để tạo một mô hình, bạn cần phải phân lớp

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
42 và cung cấp các trường cần thiết làm thuộc tính lớp. Để tiếp tục với ví dụ về blog, ở đây, cách bạn có thể tạo một mô hình cho hướng dẫn của bạn:

>>>

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
3

Với mô hình này, bạn nói với MongoEngine rằng bạn mong đợi một tài liệu

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43 có
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44,
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
45, một danh sách
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
46 và
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
47. Lớp cơ sở,
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
42, sử dụng thông tin đó cùng với các loại trường để xác thực dữ liệu đầu vào cho bạn.

Ví dụ: nếu bạn cố gắng lưu đối tượng

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43 mà không cần
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44, thì mô hình của bạn sẽ ném một ngoại lệ và cho bạn biết. Bạn có thể thực hiện điều này hơn nữa và thêm nhiều hạn chế hơn, chẳng hạn như độ dài của
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44, v.v.

Có một vài tham số chung mà bạn có thể sử dụng để xác thực các trường. Dưới đây là một số tham số được sử dụng phổ biến hơn:

  • > show dbs
    admin          0.000GB
    config         0.000GB
    local          0.000GB
    >
    
    52 Chỉ định một tên trường khác.
    specifies a different field name.
  • > show dbs
    admin          0.000GB
    config         0.000GB
    local          0.000GB
    >
    
    53 đảm bảo rằng trường được cung cấp.
    ensures that the field is provided.
  • > show dbs
    admin          0.000GB
    config         0.000GB
    local          0.000GB
    >
    
    54 cung cấp giá trị mặc định cho một trường đã cho nếu không có giá trị nào được đưa ra.
    provides a default value for a given field if no value is given.
  • > show dbs
    admin          0.000GB
    config         0.000GB
    local          0.000GB
    >
    
    55 đảm bảo rằng không có tài liệu nào khác trong bộ sưu tập có cùng giá trị cho trường này.
    ensures that no other document in the collection has the same value for this field.

Mỗi loại trường cụ thể cũng có bộ tham số riêng. Bạn có thể kiểm tra tài liệu để biết hướng dẫn đầy đủ cho các loại trường có sẵn.

Để lưu tài liệu vào cơ sở dữ liệu của bạn, bạn cần gọi

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56 trên đối tượng tài liệu. Nếu tài liệu đã tồn tại, thì tất cả các thay đổi sẽ được áp dụng cho tài liệu hiện có. Nếu tài liệu không tồn tại, thì nó sẽ được tạo.

Ở đây, một ví dụ về việc tạo và lưu một hướng dẫn vào cơ sở dữ liệu hướng dẫn mẫu của bạn:

>>>

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
4

Theo mặc định,

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56 chèn tài liệu mới vào một bộ sưu tập được đặt tên theo lớp mô hình,
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43, ngoại trừ sử dụng các chữ cái viết thường. Trong trường hợp này, tên thu thập là
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
0, phù hợp với bộ sưu tập mà bạn đã sử dụng để lưu hướng dẫn của bạn.

Pymongo thực hiện xác thực dữ liệu khi bạn gọi

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56. Điều này có nghĩa là nó kiểm tra dữ liệu đầu vào so với lược đồ bạn đã khai báo trong lớp mô hình
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43. Nếu dữ liệu đầu vào vi phạm lược đồ hoặc bất kỳ ràng buộc nào của nó, thì bạn sẽ nhận được một ngoại lệ và dữ liệu được lưu vào cơ sở dữ liệu.data validation when you call
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56. This means that it checks the input data against the schema you declared in the
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43 model class. If the input data violates the schema or any of its constraints, then you get an exception, and the data isn’t saved into the database.

Ví dụ: ở đây, những gì xảy ra nếu bạn cố gắng lưu hướng dẫn mà không cần cung cấp

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44:

>>>

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
5

Theo mặc định,

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56 chèn tài liệu mới vào một bộ sưu tập được đặt tên theo lớp mô hình,
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43, ngoại trừ sử dụng các chữ cái viết thường. Trong trường hợp này, tên thu thập là
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
0, phù hợp với bộ sưu tập mà bạn đã sử dụng để lưu hướng dẫn của bạn.

Pymongo thực hiện xác thực dữ liệu khi bạn gọi

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56. Điều này có nghĩa là nó kiểm tra dữ liệu đầu vào so với lược đồ bạn đã khai báo trong lớp mô hình
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43. Nếu dữ liệu đầu vào vi phạm lược đồ hoặc bất kỳ ràng buộc nào của nó, thì bạn sẽ nhận được một ngoại lệ và dữ liệu được lưu vào cơ sở dữ liệu.

>>>

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
6

Theo mặc định,

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56 chèn tài liệu mới vào một bộ sưu tập được đặt tên theo lớp mô hình,
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43, ngoại trừ sử dụng các chữ cái viết thường. Trong trường hợp này, tên thu thập là
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
0, phù hợp với bộ sưu tập mà bạn đã sử dụng để lưu hướng dẫn của bạn.

>>>

> use rptutorials
switched to db rptutorials
> db
rptutorials
> db.tutorial
rptutorials.tutorial
7

Theo mặc định,

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56 chèn tài liệu mới vào một bộ sưu tập được đặt tên theo lớp mô hình,
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43, ngoại trừ sử dụng các chữ cái viết thường. Trong trường hợp này, tên thu thập là
> tutorial1 = {
...     "title": "How to Iterate Through a Dictionary in Python",
...     "author": "Leodanis",
...     "contributors": [
...         "Aldren",
...         "Jim",
...         "Joanna"
...     ],
...     "url": "https://realpython.com/iterate-through-dictionary-python/"
... }

> tutorial2 = {
...      "title": "Python 3's f-Strings: An Improved String Formatting Syntax",
...      "author": "Joanna",
...      "contributors": [
...          "Adriana",
...          "David",
...          "Dan",
...          "Jim",
...          "Pavel"
...      ],
...      "url": "https://realpython.com/python-f-strings/"
... }

> db.tutorial.insertMany([tutorial1, tutorial2])
{
    "acknowledged" : true,
    "insertedIds" : [
        ObjectId("60074ff05e6ea8d224f754bb"),
        ObjectId("60074ff05e6ea8d224f754bc")
    ]
}
0, phù hợp với bộ sưu tập mà bạn đã sử dụng để lưu hướng dẫn của bạn.

Pymongo thực hiện xác thực dữ liệu khi bạn gọi > show dbs admin 0.000GB config 0.000GB local 0.000GB > 56. Điều này có nghĩa là nó kiểm tra dữ liệu đầu vào so với lược đồ bạn đã khai báo trong lớp mô hình > show dbs admin 0.000GB config 0.000GB local 0.000GB > 43. Nếu dữ liệu đầu vào vi phạm lược đồ hoặc bất kỳ ràng buộc nào của nó, thì bạn sẽ nhận được một ngoại lệ và dữ liệu được lưu vào cơ sở dữ liệu.

Ví dụ: ở đây, những gì xảy ra nếu bạn cố gắng lưu hướng dẫn mà không cần cung cấp

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44:

Trong ví dụ này, lưu ý đầu tiên rằng bạn cũng có thể xây dựng một đối tượng

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
43 bằng cách gán các giá trị cho các thuộc tính của nó. Thứ hai, vì bạn không cung cấp
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44 cho hướng dẫn mới,
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
56 tăng
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
66 cho bạn biết rằng trường
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44 là bắt buộc. Có xác thực dữ liệu tự động là một tính năng tuyệt vời sẽ giúp bạn tiết kiệm một số cơn đau đầu.

Mỗi lớp con

> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
42 có thuộc tính
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
69 mà bạn có thể sử dụng để truy cập các tài liệu trong bộ sưu tập được liên kết. Ví dụ: ở đây, cách thức bạn có thể in
> show dbs
admin          0.000GB
config         0.000GB
local          0.000GB
>
44 của tất cả các hướng dẫn hiện tại của bạn:

  • Vòng lặp
    > show dbs
    admin          0.000GB
    config         0.000GB
    local          0.000GB
    >
    
    71 lặp lại trên tất cả các hướng dẫn của bạn và in dữ liệu
    > show dbs
    admin          0.000GB
    config         0.000GB
    local          0.000GB
    >
    
    44 của họ lên màn hình. Bạn cũng có thể sử dụng
    > show dbs
    admin          0.000GB
    config         0.000GB
    local          0.000GB
    >
    
    69 để lọc tài liệu của mình. Ví dụ, giả sử bạn muốn truy xuất các hướng dẫn được tác giả bởi Alex. Trong trường hợp đó, bạn có thể làm một cái gì đó như thế này:MongoDB and NoSQL databases are
  • Mongoengine rất phù hợp để quản lý cơ sở dữ liệu MongoDB của bạn cho bất kỳ loại ứng dụng nào. Các tính năng của nó làm cho nó lý tưởng để tạo ra các chương trình hiệu quả và có thể mở rộng bằng cách sử dụng phương pháp cấp cao. Nếu bạn đang tìm kiếm thêm thông tin về Mongoengine, hãy chắc chắn kiểm tra hướng dẫn sử dụng của nó.install and run MongoDB on your system
  • Sự kết luậnMongoDB databases
  • Nếu bạn cần một giải pháp cơ sở dữ liệu mạnh mẽ, có thể mở rộng và linh hoạt, thì MongoDB có thể là một lựa chọn tốt cho bạn. MongoDB là một cơ sở dữ liệu NoQuery trưởng thành và phổ biến với sự hỗ trợ của Python tuyệt vời. Với sự hiểu biết tốt về cách truy cập MongoDB với Python, bạn sẽ sẵn sàng tạo các ứng dụng cơ sở dữ liệu có tỷ lệ tốt và cung cấp hiệu suất tuyệt vời.PyMongo driver
  • Với MongoDB, bạn cũng có lợi ích của mô hình dữ liệu có thể đọc được và có khả năng linh hoạt của con người, vì vậy bạn có thể thích ứng với các thay đổi yêu cầu nhanh chóng.MongoEngine object-document mapper to work with MongoDB

Trong hướng dẫn này, bạn đã học được: