Làm cách nào để hiển thị bộ sưu tập trong mongodb?

MongoDB là một cơ sở dữ liệu đa nền tảng, hướng tài liệu, cung cấp hiệu suất cao, tính sẵn sàng cao và khả năng mở rộng dễ dàng. MongoDB hoạt động trên khái niệm bộ sưu tập và tài liệu

cơ sở dữ liệu

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

Bộ sưu tập

Bộ sưu tập là một nhóm các tài liệu MongoDB. Nó tương đương với một bảng RDBMS. Một bộ sưu tập tồn tại trong một cơ sở dữ liệu duy nhất. Bộ sưu tập không thực thi lược đồ. Tài liệu trong một bộ sưu tập có thể có các trường khác nhau. Thông thường, tất cả các tài liệu trong một bộ sưu tập đều có mục đích tương tự hoặc liên quan

Tài liệu

Tài liệu là một tập hợp các cặp khóa-giá trị. Tài liệu có lược đồ động. Lược đồ động có nghĩa là các tài liệu trong cùng một bộ sưu tập không cần phải có cùng một bộ trường hoặc cấu trúc và các trường chung trong tài liệu của một bộ sưu tập có thể chứa các loại dữ liệu khác nhau

Bảng sau đây cho thấy mối quan hệ của thuật ngữ RDBMS với MongoDB

RDBMSMongoDBDatabaseDatabaseTableCollectionTuple/RowDocumentcolumnFieldTable JoinEmbedded DocumentsPrimary KeyPrimary Key [Khóa mặc định _id do chính mongodb cung cấp]Database Server and ClientMysqld/Oraclemongodmysql/sqlplusmongo

Tài liệu mẫu

Ví dụ sau hiển thị cấu trúc tài liệu của một trang blog, cấu trúc này chỉ đơn giản là một cặp giá trị khóa được phân tách bằng dấu phẩy

{
   _id: ObjectId[7df78ad8902c]
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by: 'tutorials point',
   url: '//www.tutorialspoint.com',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100, 
   comments: [	
      {
         user:'user1',
         message: 'My first comment',
         dateCreated: new Date[2011,1,20,2,15],
         like: 0 
      },
      {
         user:'user2',
         message: 'My second comments',
         dateCreated: new Date[2011,1,25,7,45],
         like: 5
      }
   ]
}

_id là một số thập lục phân 12 byte đảm bảo tính duy nhất của mọi tài liệu. Bạn có thể cung cấp _id trong khi chèn tài liệu. Nếu bạn không cung cấp thì MongoDB cung cấp một id duy nhất cho mọi tài liệu. 12 byte này, 4 byte đầu tiên cho dấu thời gian hiện tại, 3 byte tiếp theo cho id máy, 2 byte tiếp theo cho id tiến trình của máy chủ MongoDB và 3 byte còn lại là GIÁ TRỊ gia tăng đơn giản

Bất kỳ cơ sở dữ liệu quan hệ nào cũng có thiết kế lược đồ điển hình hiển thị số lượng bảng và mối quan hệ giữa các bảng này. Trong khi ở MongoDB, không có khái niệm về mối quan hệ

Ưu điểm của MongoDB so với RDBMS

  • Schema less − MongoDB là cơ sở dữ liệu tài liệu trong đó một bộ sưu tập chứa các tài liệu khác nhau. Số lượng trường, nội dung và kích thước của tài liệu có thể khác nhau từ tài liệu này sang tài liệu khác

  • Cấu trúc của một đối tượng rõ ràng

  • Không có kết nối phức tạp

  • Khả năng truy vấn sâu. MongoDB hỗ trợ các truy vấn động trên tài liệu bằng ngôn ngữ truy vấn dựa trên tài liệu mạnh gần bằng SQL

  • điều chỉnh

  • Dễ dàng mở rộng quy mô − MongoDB dễ dàng mở rộng quy mô

  • Không cần chuyển đổi/ánh xạ các đối tượng ứng dụng sang các đối tượng cơ sở dữ liệu

  • Sử dụng bộ nhớ trong để lưu trữ bộ làm việc [có cửa sổ], cho phép truy cập dữ liệu nhanh hơn

Tại sao nên sử dụng MongoDB?

  • Lưu trữ hướng tài liệu - Dữ liệu được lưu trữ ở dạng tài liệu kiểu JSON

  • Lập chỉ mục trên bất kỳ thuộc tính nào

  • Sao chép và tính sẵn sàng cao

  • Tự động phân mảnh

  • truy vấn phong phú

  • Cập nhật tại chỗ nhanh chóng

  • Hỗ trợ chuyên nghiệp bởi MongoDB

Sử dụng MongoDB ở đâu?

  • Dữ liệu lớn
  • Quản lý và phân phối nội dung
  • Cơ sở hạ tầng di động và xã hội
  • Quản lý dữ liệu người dùng
  • Trung tâm dữ liệu

Bây giờ chúng ta hãy xem cách cài đặt MongoDB trên Windows

Cài đặt MongoDB trên Windows

Để cài đặt MongoDB trên Windows, trước tiên hãy tải xuống bản phát hành MongoDB mới nhất từ ​​https. //www. mongodb. tổ chức/tải xuống. Đảm bảo bạn có phiên bản MongoDB chính xác tùy thuộc vào phiên bản Windows của bạn. Để có phiên bản Windows của bạn, hãy mở dấu nhắc lệnh và thực hiện lệnh sau

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>

Phiên bản 32-bit của MongoDB chỉ hỗ trợ cơ sở dữ liệu nhỏ hơn 2GB và chỉ phù hợp cho mục đích thử nghiệm và đánh giá

Bây giờ hãy giải nén tệp đã tải xuống của bạn vào c. \ ổ đĩa hoặc bất kỳ vị trí nào khác. Đảm bảo tên của thư mục được giải nén là mongodb-win32-i386-[version] hoặc mongodb-win32-x86_64-[version]. Đây [phiên bản] là phiên bản tải xuống MongoDB

Tiếp theo, mở dấu nhắc lệnh và chạy lệnh sau

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>

Trong trường hợp bạn đã trích xuất MongoDB ở một vị trí khác, thì hãy đi đến đường dẫn đó bằng cách sử dụng lệnh cd FOLDER/DIR và bây giờ hãy chạy quy trình đã cho ở trên

MongoDB yêu cầu một thư mục dữ liệu để lưu trữ các tệp của nó. Vị trí mặc định cho thư mục dữ liệu MongoDB là c. \data\db. Vì vậy, bạn cần tạo thư mục này bằng Command Prompt. Thực hiện chuỗi lệnh sau

C:\>md data
C:\md data\db

Nếu bạn phải cài đặt MongoDB ở một vị trí khác, thì bạn cần chỉ định một đường dẫn thay thế cho \data\db bằng cách đặt đường dẫn dbpath trong mongod. người cũ. Đối với cùng, đưa ra các lệnh sau

Trong dấu nhắc lệnh, điều hướng đến thư mục bin có trong thư mục cài đặt MongoDB. Giả sử thư mục cài đặt của tôi là D. \thiết lập\mongodb

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 

Điều này sẽ hiển thị thông báo chờ kết nối trên đầu ra của bàn điều khiển, điều này cho biết rằng mongod. exe đang chạy thành công

Bây giờ để chạy MongoDB, bạn cần mở một dấu nhắc lệnh khác và đưa ra lệnh sau

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>

Điều này sẽ cho thấy MongoDB đã được cài đặt và chạy thành công. Lần tới khi bạn chạy MongoDB, bạn chỉ cần đưa ra các lệnh

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe

Cài đặt MongoDB trên Ubuntu

Chạy lệnh sau để nhập khóa GPG công khai MongoDB -

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

Tạo một /etc/apt/sources. danh sách. d/mongodb. liệt kê tập tin bằng cách sử dụng lệnh sau

________số 8

Bây giờ hãy đưa ra lệnh sau để cập nhật kho lưu trữ -

sudo apt-get update

Tiếp theo cài đặt MongoDB bằng cách sử dụng lệnh sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
0

Trong cài đặt trên, 2. 2. 3 hiện đang được phát hành phiên bản MongoDB. Đảm bảo luôn cài đặt phiên bản mới nhất. Bây giờ MongoDB đã được cài đặt thành công

Bắt đầu MongoDB

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
1

Dừng MongoDB

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
2

Khởi động lại MongoDB

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
3

Để sử dụng MongoDB, hãy chạy lệnh sau

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
4

Điều này sẽ kết nối bạn với phiên bản MongoDB đang chạy

Trợ giúp MongoDB

Để có danh sách các lệnh, hãy nhập db. trợ giúp [] trong ứng dụng khách MongoDB. Điều này sẽ cung cấp cho bạn một danh sách các lệnh như trong ảnh chụp màn hình sau

Thống kê MongoDB

Để lấy số liệu thống kê về máy chủ MongoDB, hãy nhập lệnh db. stats[] trong ứng dụng khách MongoDB. Điều này sẽ hiển thị tên cơ sở dữ liệu, số lượng bộ sưu tập và tài liệu trong cơ sở dữ liệu. Đầu ra của lệnh được hiển thị trong ảnh chụp màn hình sau

Dữ liệu trong MongoDB có lược đồ linh hoạt. tài liệu trong cùng một bộ sưu tập. Chúng không cần phải có cùng một bộ trường hoặc cấu trúc và các trường chung trong tài liệu của bộ sưu tập có thể chứa các loại dữ liệu khác nhau

Một số lưu ý khi thiết kế Schema trong MongoDB

  • Thiết kế lược đồ của bạn theo yêu cầu của người dùng

  • Kết hợp các đối tượng vào một tài liệu nếu bạn sẽ sử dụng chúng cùng nhau. Mặt khác, hãy tách chúng ra [nhưng đảm bảo rằng không cần tham gia]

  • Sao chép dữ liệu [nhưng có giới hạn] vì dung lượng đĩa rẻ so với thời gian tính toán

  • Thực hiện tham gia trong khi viết, không phải khi đọc

  • Tối ưu hóa lược đồ của bạn cho hầu hết các trường hợp sử dụng thường xuyên

  • Thực hiện tổng hợp phức tạp trong lược đồ

Thí dụ

Giả sử một khách hàng cần thiết kế cơ sở dữ liệu cho blog/trang web của mình và xem sự khác biệt giữa thiết kế lược đồ RDBMS và MongoDB. Website có các yêu cầu sau

  • Mỗi bài đăng có tiêu đề, mô tả và url duy nhất
  • Mỗi bài đăng có thể có một hoặc nhiều thẻ
  • Mỗi bài đăng có tên của nhà xuất bản và tổng số lượt thích
  • Mỗi bài đăng đều có nhận xét của người dùng cùng với tên, tin nhắn, thời gian dữ liệu và lượt thích của họ
  • Trên mỗi bài đăng, có thể có 0 hoặc nhiều bình luận

Trong lược đồ RDBMS, thiết kế cho các yêu cầu trên sẽ có tối thiểu ba bảng

Trong lược đồ MongoDB, thiết kế sẽ có một bài đăng bộ sưu tập và cấu trúc sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
5

Vì vậy, trong khi hiển thị dữ liệu, trong RDBMS, bạn cần nối ba bảng và trong MongoDB, dữ liệu sẽ chỉ được hiển thị từ một bộ sưu tập

Trong chương này, chúng ta sẽ xem cách tạo cơ sở dữ liệu trong MongoDB

Lệnh sử dụng

MongoDB sử dụng DATABASE_NAME được sử dụng để tạo cơ sở dữ liệu. Lệnh sẽ tạo cơ sở dữ liệu mới nếu nó chưa tồn tại, ngược lại nó sẽ trả về cơ sở dữ liệu hiện có

cú pháp

Cú pháp cơ bản của câu lệnh use DATABASE như sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
6

Thí dụ

Nếu bạn muốn sử dụng cơ sở dữ liệu có tên , thì hãy sử dụng câu lệnh DATABASE như sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
7

Để kiểm tra cơ sở dữ liệu hiện được chọn của bạn, hãy sử dụng lệnh db

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
8

Nếu bạn muốn kiểm tra danh sách cơ sở dữ liệu của mình, hãy sử dụng lệnh show dbs

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
9

Cơ sở dữ liệu đã tạo của bạn [mydb] không có trong danh sách. Để hiển thị cơ sở dữ liệu, bạn cần chèn ít nhất một tài liệu vào đó

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
0

Trong cơ sở dữ liệu mặc định của MongoDB là test. Nếu bạn không tạo bất kỳ cơ sở dữ liệu nào, thì các bộ sưu tập sẽ được lưu trữ trong cơ sở dữ liệu thử nghiệm

Trong chương này, chúng ta sẽ xem cách xóa cơ sở dữ liệu bằng lệnh MongoDB

Phương thức dropDatabase[]

cơ sở dữ liệu MongoDB. dropDatabase[] được sử dụng để loại bỏ cơ sở dữ liệu hiện có

cú pháp

Cú pháp cơ bản của lệnh dropDatabase[] như sau -

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
1

Thao tác này sẽ xóa cơ sở dữ liệu đã chọn. Nếu bạn chưa chọn bất kỳ cơ sở dữ liệu nào, nó sẽ xóa cơ sở dữ liệu 'thử nghiệm' mặc định

Thí dụ

Đầu tiên, kiểm tra danh sách các cơ sở dữ liệu có sẵn bằng cách sử dụng lệnh, show dbs

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
2

Nếu bạn muốn xóa cơ sở dữ liệu mới, lệnh dropDatabase[] sẽ như sau:

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
3

Bây giờ hãy kiểm tra danh sách cơ sở dữ liệu

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
4

Trong chương này, chúng ta sẽ xem cách tạo một bộ sưu tập bằng MongoDB

Phương thức createCollection[]

cơ sở dữ liệu MongoDB. createCollection[name, options] được sử dụng để tạo bộ sưu tập

cú pháp

Cú pháp cơ bản của lệnh createCollection[] như sau -

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
5

Trong lệnh, tên là tên của bộ sưu tập sẽ được tạo. Tùy chọn là một tài liệu và được sử dụng để chỉ định cấu hình của bộ sưu tập

Tham sốTypeDescriptionNameStringName của bộ sưu tập sẽ được tạoOptionsDocument[Tùy chọn] Chỉ định các tùy chọn về kích thước bộ nhớ và lập chỉ mục

Tham số tùy chọn là tùy chọn, vì vậy bạn chỉ cần chỉ định tên của bộ sưu tập. Sau đây là danh sách các tùy chọn bạn có thể sử dụng –

FieldTypeDescriptioncappedBoolean[Tùy chọn] Nếu đúng, bật bộ sưu tập giới hạn. Bộ sưu tập được giới hạn là bộ sưu tập có kích thước cố định tự động ghi đè lên các mục nhập cũ nhất khi đạt đến kích thước tối đa. Nếu bạn chỉ định đúng, bạn cũng cần chỉ định tham số kích thước. autoIndexIdBoolean[Tùy chọn] Nếu đúng, tự động tạo chỉ mục trên trường _id. s Giá trị mặc định là sai. sizenumber[Tùy chọn] Chỉ định kích thước tối đa tính bằng byte cho bộ sưu tập giới hạn. Nếu giới hạn là đúng, thì bạn cũng cần chỉ định trường này. maxnumber[Tùy chọn] Chỉ định số lượng tài liệu tối đa được phép trong bộ sưu tập giới hạn

Trong khi chèn tài liệu, MongoDB trước tiên kiểm tra trường kích thước của bộ sưu tập giới hạn, sau đó kiểm tra trường tối đa

ví dụ

Cú pháp cơ bản của phương thức createCollection[] không có tùy chọn như sau:

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
6

Bạn có thể kiểm tra bộ sưu tập đã tạo bằng cách sử dụng lệnh show collections

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
7

Ví dụ sau đây cho thấy cú pháp của phương thức createCollection[] với một số tùy chọn quan trọng –

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
8

Trong MongoDB, bạn không cần tạo bộ sưu tập. MongoDB tự động tạo bộ sưu tập khi bạn chèn một số tài liệu

C:\>move mongodb-win64-* mongodb
   1 dir[s] moved.
C:\>
9

Trong chương này, chúng ta sẽ xem cách loại bỏ một bộ sưu tập bằng MongoDB

Phương thức drop[]

Cơ sở dữ liệu của MongoDB. thu thập. drop[] được sử dụng để loại bỏ một bộ sưu tập khỏi cơ sở dữ liệu

cú pháp

Cú pháp cơ bản của lệnh drop[] như sau -

C:\>md data
C:\md data\db
0

Thí dụ

Trước tiên, hãy kiểm tra các bộ sưu tập có sẵn trong cơ sở dữ liệu của bạn mydb

C:\>md data
C:\md data\db
1

Bây giờ thả bộ sưu tập với tên mycollection

C:\>md data
C:\md data\db
2

Kiểm tra lại danh sách các bộ sưu tập vào cơ sở dữ liệu

C:\>md data
C:\md data\db
3

Phương thức drop[] sẽ trả về true, nếu bộ sưu tập đã chọn được hủy thành công, nếu không, nó sẽ trả về false

MongoDB hỗ trợ nhiều kiểu dữ liệu. Một số trong số họ là -

  • Chuỗi - Đây là kiểu dữ liệu được sử dụng phổ biến nhất để lưu trữ dữ liệu. Chuỗi trong MongoDB phải hợp lệ UTF-8

  • Số nguyên - Loại này được sử dụng để lưu trữ một giá trị số. Số nguyên có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ của bạn

  • Boolean - Loại này được sử dụng để lưu trữ giá trị boolean [true/false]

  • Double - Loại này được sử dụng để lưu trữ các giá trị dấu chấm động

  • Phím tối thiểu/tối đa - Loại này được sử dụng để so sánh một giá trị với các phần tử BSON thấp nhất và cao nhất

  • Mảng - Loại này được sử dụng để lưu trữ mảng hoặc danh sách hoặc nhiều giá trị vào một khóa

  • Dấu thời gian − ctimestamp. Điều này có thể hữu ích để ghi lại khi một tài liệu đã được sửa đổi hoặc thêm vào

  • Đối tượng - Kiểu dữ liệu này được sử dụng cho các tài liệu nhúng

  • Null - Loại này được sử dụng để lưu trữ giá trị Null

  • Biểu tượng - Kiểu dữ liệu này được sử dụng giống hệt với một chuỗi;

  • Ngày - Kiểu dữ liệu này được sử dụng để lưu trữ ngày hoặc giờ hiện tại ở định dạng thời gian UNIX. Bạn có thể chỉ định thời gian ngày của riêng mình bằng cách tạo đối tượng Ngày và chuyển ngày, tháng, năm vào đó

  • ID đối tượng - Kiểu dữ liệu này được sử dụng để lưu trữ ID của tài liệu

  • Dữ liệu nhị phân - Kiểu dữ liệu này được sử dụng để lưu trữ dữ liệu nhị phân

  • Mã - Kiểu dữ liệu này được sử dụng để lưu mã JavaScript vào tài liệu

  • Biểu thức chính quy - Kiểu dữ liệu này được sử dụng để lưu trữ biểu thức chính quy

Trong chương này, chúng ta sẽ tìm hiểu cách chèn tài liệu vào bộ sưu tập MongoDB

Phương thức chèn[]

Để chèn dữ liệu vào bộ sưu tập MongoDB, bạn cần sử dụng phương thức insert[] hoặc save[] của MongoDB

cú pháp

Cú pháp cơ bản của lệnh insert[] như sau -

C:\>md data
C:\md data\db
4

Thí dụ

C:\>md data
C:\md data\db
5

Ở đây mycol là tên bộ sưu tập của chúng tôi, như được tạo trong chương trước. Nếu bộ sưu tập không tồn tại trong cơ sở dữ liệu, thì MongoDB sẽ tạo bộ sưu tập này và sau đó chèn một tài liệu vào đó

Trong tài liệu được chèn vào, nếu chúng ta không chỉ định tham số _id thì MongoDB sẽ gán một ObjectId duy nhất cho tài liệu này

_id là số thập lục phân 12 byte duy nhất cho mọi tài liệu trong bộ sưu tập. 12 byte được chia như sau -

C:\>md data
C:\md data\db
6

Để chèn nhiều tài liệu trong một truy vấn, bạn có thể truyền một mảng tài liệu vào lệnh insert[]

Thí dụ

C:\>md data
C:\md data\db
7

Để chèn tài liệu, bạn có thể sử dụng db. bưu kiện. lưu [tài liệu] cũng. Nếu bạn không chỉ định _id trong tài liệu thì phương thức save[] sẽ hoạt động giống như phương thức insert[]. Nếu bạn chỉ định _id thì nó sẽ thay thế toàn bộ dữ liệu của tài liệu chứa _id như được chỉ định trong phương thức save[]

Trong chương này, chúng ta sẽ tìm hiểu cách truy vấn tài liệu từ bộ sưu tập MongoDB

Phương thức find[]

Để truy vấn dữ liệu từ bộ sưu tập MongoDB, bạn cần sử dụng phương thức find[] của MongoDB

cú pháp

Cú pháp cơ bản của phương thức find[] như sau -

C:\>md data
C:\md data\db
8

phương thức find[] sẽ hiển thị tất cả các tài liệu theo cách không có cấu trúc

Phương thức xinh[]

Để hiển thị kết quả theo cách đã định dạng, bạn có thể sử dụng phương thức pretty[]

cú pháp

C:\>md data
C:\md data\db
9

Thí dụ

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
0

Ngoài phương thức find[], còn có phương thức findOne[] chỉ trả về một tài liệu

RDBMS Where Mệnh đề tương đương trong MongoDB

Để truy vấn tài liệu trên cơ sở một số điều kiện, bạn có thể sử dụng các thao tác sau

OperationSyntaxExampleRDBMS EquivalentEquality{:}db.mycol.find[{"by":"tutorials point"}].pretty[]where by = 'tutorials point'Less Than{:{$lt:}}db.mycol.find[{"likes":{$lt:50}}].pretty[]where likes < 50Less Than Equals{:{$lte:}}db.mycol.find[{"likes":{$lte:50}}].pretty[]where likes 50Greater Than Equals{:{$gte:}}db.mycol.find[{"likes":{$gte:50}}].pretty[]where likes >= 50Not Equals{:{$ne:}}db.mycol.find[{"likes":{$ne:50}}].pretty[]where likes != 50

AND in MongoDB

cú pháp

In the find[] method, if you pass multiple keys by separating them by ',' then MongoDB treats it as AND condition. Following is the basic syntax of AND −

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
1

Thí dụ

Following example will show all the tutorials written by 'tutorials point' and whose title is 'MongoDB Overview'

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
2

For the above given example, equivalent where clause will be ' where by = 'tutorials point' AND title = 'MongoDB Overview' '. You can pass any number of key, value pairs in find clause

OR in MongoDB

cú pháp

To query documents based on the OR condition, you need to use $or keyword. Following is the basic syntax of OR −

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
3

Thí dụ

Following example will show all the tutorials written by 'tutorials point' or whose title is 'MongoDB Overview'

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
4

Using AND and OR Together

Thí dụ

The following example will show the documents that have likes greater than 10 and whose title is either 'MongoDB Overview' or by is 'tutorials point'. SQL tương đương mệnh đề where là 'where likes>10 AND [by = 'tutorials point' OR title = 'MongoDB Overview']'

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
5

MongoDB's update[] and save[] methods are used to update document into a collection. The update[] method updates the values in the existing document while the save[] method replaces the existing document with the document passed in save[] method

MongoDB Update[] Method

The update[] method updates the values in the existing document

cú pháp

The basic syntax of update[] method is as follows −

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
6

Thí dụ

Consider the mycol collection has the following data

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
7

Following example will set the new title 'New MongoDB Tutorial' of the documents whose title is 'MongoDB Overview'

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
8

By default, MongoDB will update only a single document. To update multiple documents, you need to set a parameter 'multi' to true

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
9

MongoDB Save[] Method

The save[] method replaces the existing document with the new document passed in the save[] method

cú pháp

The basic syntax of MongoDB save[] method is shown below −

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
0

Thí dụ

Following example will replace the document with the _id '5983548781331adf45ec5'

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
1

In this chapter, we will learn how to delete a document using MongoDB

The remove[] Method

MongoDB's remove[] method is used to remove a document from the collection. remove[] method accepts two parameters. One is deletion criteria and second is justOne flag

  • deletion criteria − [Optional] deletion criteria according to documents will be removed

  • justOne − [Optional] if set to true or 1, then remove only one document

cú pháp

Basic syntax of remove[] method is as follows −

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
2

Thí dụ

Consider the mycol collection has the following data

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
7

Following example will remove all the documents whose title is 'MongoDB Overview'

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
4

Remove Only One

If there are multiple records and you want to delete only the first record, then set justOne parameter in remove[] method

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
5

Remove All Documents

If you don't specify deletion criteria, then MongoDB will delete whole documents from the collection. This is equivalent of SQL's truncate command

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
6

In MongoDB, projection means selecting only the necessary data rather than selecting whole of the data of a document. If a document has 5 fields and you need to show only 3, then select only 3 fields from them

Phương thức find[]

MongoDB's find[] method, explained in MongoDB Query Document accepts second optional parameter that is list of fields that you want to retrieve. In MongoDB, when you execute find[] method, then it displays all fields of a document. To limit this, you need to set a list of fields with value 1 or 0. 1 is used to show the field while 0 is used to hide the fields

cú pháp

Cú pháp cơ bản của phương thức find[] với phép chiếu như sau -

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
7

Thí dụ

Consider the collection mycol has the following data −

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
7

Following example will display the title of the document while querying the document

D:\set up\mongodb\bin>mongo.exe
MongoDB shell version: 2.4.6
connecting to: test
>db.test.save[ { a: 1 } ]
>db.test.find[]
{ "_id" : ObjectId[5879b0f65a56a454], "a" : 1 }
>
9

Please note _id field is always displayed while executing find[] method, if you don't want this field, then you need to set it as 0

In this chapter, we will learn how to limit records using MongoDB

The Limit[] Method

To limit the records in MongoDB, you need to use limit[] method. The method accepts one number type argument, which is the number of documents that you want to be displayed

cú pháp

The basic syntax of limit[] method is as follows −

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
0

Thí dụ

Consider the collection myycol has the following data

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
7

Following example will display only two documents while querying the document

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
2

If you don't specify the number argument in limit[] method then it will display all documents from the collection

MongoDB Skip[] Method

Apart from limit[] method, there is one more method skip[] which also accepts number type argument and is used to skip the number of documents

cú pháp

The basic syntax of skip[] method is as follows −

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
3

Thí dụ

Following example will display only the second document

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
4

Please note, the default value in skip[] method is 0

In this chapter, we will learn how to sort records in MongoDB

The sort[] Method

To sort documents in MongoDB, you need to use sort[] method. The method accepts a document containing a list of fields along with their sorting order. To specify sorting order 1 and -1 are used. 1 is used for ascending order while -1 is used for descending order

cú pháp

The basic syntax of sort[] method is as follows −

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
5

Thí dụ

Consider the collection myycol has the following data

C:\Users\XYZ>d:
D:\>cd "set up"
D:\set up>cd mongodb
D:\set up\mongodb>cd bin
D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
7

Following example will display the documents sorted by title in the descending order

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
7

Please note, if you don't specify the sorting preference, then sort[] method will display the documents in ascending order

Indexes support the efficient resolution of queries. Without indexes, MongoDB must scan every document of a collection to select those documents that match the query statement. This scan is highly inefficient and require MongoDB to process a large volume of data

Indexes are special data structures, that store a small portion of the data set in an easy-to-traverse form. The index stores the value of a specific field or set of fields, ordered by the value of the field as specified in the index

The createIndex[] Method

To create an index, you need to use createIndex[] method of MongoDB

cú pháp

The basic syntax of createIndex[] method is as follows[]

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
8

Here key is the name of the field on which you want to create index and 1 is for ascending order. To create index in descending order you need to use -1

Thí dụ

D:\set up\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data" 
D:\set up\mongodb\bin>mongo.exe
9

In createIndex[] method you can pass multiple fields, to create index on multiple fields

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
0

This method also accepts list of options [which are optional]. Following is the list −

ParameterTypeDescriptionbackgroundBooleanBuilds the index in the background so that building an index does not block other database activities. Specify true to build in the background. The default value is false. uniqueBooleanCreates a unique index so that the collection will not accept insertion of documents where the index key or keys match an existing value in the index. Specify true to create a unique index. The default value is false. namestringThe name of the index. If unspecified, MongoDB generates an index name by concatenating the names of the indexed fields and the sort order. sparseBooleanIf true, the index only references documents with the specified field. These indexes use less space but behave differently in some situations [particularly sorts]. The default value is false. expireAfterSecondsintegerSpecifies a value, in seconds, as a TTL to control how long MongoDB retains documents in this collection. weightsdocumentThe weight is a number ranging from 1 to 99,999 and denotes the significance of the field relative to the other indexed fields in terms of the score. default_languagestringFor a text index, the language that determines the list of stop words and the rules for the stemmer and tokenizer. The default value is English. language_overridestringFor a text index, specify the name of the field in the document that contains, the language to override the default language. Giá trị mặc định là ngôn ngữ

The dropIndex[] method

You can drop a particular index using the dropIndex[] method of MongoDB

cú pháp

The basic syntax of DropIndex[] method is as follows[]

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
1

Here, "key" is the name of the file on which you want to remove an existing index. Instead of the index specification document [above syntax], you can also specify the name of the index directly as

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
2

Thí dụ

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
3

The dropIndexes[] method

This method deletes multiple [specified] indexes on a collection

cú pháp

The basic syntax of DropIndexes[] method is as follows[] −

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
4

Thí dụ

Assume we have created 2 indexes in the named mycol collection as shown below −

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
5

Following example removes the above created indexes of mycol −

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
6

The getIndexes[] method

This method returns the description of all the indexes int the collection

cú pháp

Following is the basic syntax od the getIndexes[] method −

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
7

Thí dụ

Assume we have created 2 indexes in the named mycol collection as shown below −

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
5

Following example retrieves all the indexes in the collection mycol −

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
9

Aggregations operations process data records and return computed results. Aggregation operations group values from multiple documents together, and can perform a variety of operations on the grouped data to return a single result. In SQL count[*] and with group by is an equivalent of mongodb aggregation

The aggregate[] Method

For the aggregation in MongoDB, you should use aggregate[] method

cú pháp

Basic syntax of aggregate[] method is as follows −

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
0

Thí dụ

In the collection you have the following data −

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
1

Now from the above collection, if you want to display a list stating how many tutorials are written by each user, then you will use the following aggregate[] method −

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
2

Sql equivalent query for the above use case will be select by_user, count[*] from mycol group by by_user

In the above example, we have grouped documents by field by_user and on each occurrence of by_user previous value of sum is incremented. Following is a list of available aggregation expressions

ExpressionDescriptionExample$sumSums up the defined value from all documents in the collection. db. mycol. aggregate[[{$group . {_id . "$by_user", num_tutorial . {$sum . "$likes"}}}]]$avgCalculates the average of all given values from all documents in the collection. db. mycol. aggregate[[{$group . {_id . "$by_user", num_tutorial. {$trung bình. "$likes"}}}]]$minGets the minimum of the corresponding values from all documents in the collection. db. mycol. aggregate[[{$group . {_id . "$by_user", num_tutorial . {$ phút. "$likes"}}}]]$maxGets the maximum of the corresponding values from all documents in the collection. db. mycol. aggregate[[{$group . {_id . "$by_user", num_tutorial . {$max . "$likes"}}}]]$pushInserts the value to an array in the resulting document. db. mycol. aggregate[[{$group . {_id . "$by_user", url . {$push. "$url"}}}]]$addToSetInserts the value to an array in the resulting document but does not create duplicates. db. nấm mốc. tổng hợp[[{$group. {_Tôi. "$by_user", url. {$addToSet. "$url"}}}]]$firstLấy tài liệu đầu tiên từ tài liệu nguồn theo nhóm. Thông thường, điều này chỉ có ý nghĩa cùng với một số giai đoạn “$sort” được áp dụng trước đó. db. nấm mốc. tổng hợp[[{$group. {_Tôi. "$by_user", first_url. {$đầu tiên. "$url"}}}]]$lastLấy tài liệu cuối cùng từ tài liệu nguồn theo nhóm. Thông thường, điều này chỉ có ý nghĩa cùng với một số giai đoạn “$sort” được áp dụng trước đó. db. nấm mốc. tổng hợp[[{$group. {_Tôi. "$by_user", last_url. {$last. "$url"}}}]]

Khái niệm đường ống

Trong lệnh UNIX, đường dẫn shell có nghĩa là khả năng thực hiện một thao tác trên một số đầu vào và sử dụng đầu ra làm đầu vào cho lệnh tiếp theo, v.v. MongoDB cũng hỗ trợ khái niệm tương tự trong khung tổng hợp. Có một tập hợp các giai đoạn có thể và mỗi giai đoạn đó được coi là một tập hợp tài liệu làm đầu vào và tạo ra một tập hợp tài liệu kết quả [hoặc tài liệu JSON kết quả cuối cùng ở cuối đường ống]. Điều này sau đó có thể được sử dụng cho giai đoạn tiếp theo, v.v.

Sau đây là các giai đoạn có thể có trong khung tổng hợp -

  • $project - Được sử dụng để chọn một số trường cụ thể từ một bộ sưu tập

  • $match − Đây là thao tác lọc và do đó, điều này có thể làm giảm số lượng tài liệu được cung cấp làm đầu vào cho giai đoạn tiếp theo

  • $group - Điều này thực hiện tổng hợp thực tế như đã thảo luận ở trên

  • $sort - Sắp xếp tài liệu

  • $skip - Với điều này, có thể bỏ qua trong danh sách tài liệu cho một số lượng tài liệu nhất định

  • $limit - Điều này giới hạn số lượng tài liệu để xem, theo số đã cho bắt đầu từ các vị trí hiện tại

  • $unwind - Cái này được sử dụng để thư giãn tài liệu đang sử dụng mảng. Khi sử dụng một mảng, dữ liệu là loại được nối trước và thao tác này sẽ được hoàn tác với thao tác này để có lại các tài liệu riêng lẻ. Như vậy với giai đoạn này chúng ta sẽ tăng lượng tài liệu cho giai đoạn tiếp theo

Sao chép là quá trình đồng bộ hóa dữ liệu trên nhiều máy chủ. Bản sao cung cấp khả năng dự phòng và tăng tính khả dụng của dữ liệu với nhiều bản sao dữ liệu trên các máy chủ cơ sở dữ liệu khác nhau. Bản sao bảo vệ cơ sở dữ liệu khỏi sự mất mát của một máy chủ. Bản sao cũng cho phép bạn khôi phục sau lỗi phần cứng và gián đoạn dịch vụ. Với các bản sao bổ sung của dữ liệu, bạn có thể dành riêng một bản để khôi phục, báo cáo hoặc sao lưu sau thảm họa

Tại sao sao chép?

  • Để giữ an toàn cho dữ liệu của bạn
  • Dữ liệu sẵn có cao [24*7]
  • khắc phục thảm họa
  • Không có thời gian chết để bảo trì [như sao lưu, xây dựng lại chỉ mục, nén]
  • Tỷ lệ đọc [các bản sao bổ sung để đọc từ]
  • Bộ bản sao trong suốt đối với ứng dụng

Cách sao chép hoạt động trong MongoDB

MongoDB đạt được bản sao bằng cách sử dụng bộ bản sao. Bộ bản sao là một nhóm các phiên bản mongod lưu trữ cùng một bộ dữ liệu. Trong một bản sao, một nút là nút chính nhận tất cả các thao tác ghi. Tất cả các phiên bản khác, chẳng hạn như phiên bản thứ cấp, áp dụng các thao tác từ phiên bản chính để chúng có cùng một tập dữ liệu. Bộ bản sao chỉ có thể có một nút chính

  • Bộ bản sao là một nhóm gồm hai nút trở lên [thường yêu cầu tối thiểu 3 nút]

  • Trong một bộ bản sao, một nút là nút chính và các nút còn lại là nút phụ

  • Tất cả dữ liệu sao chép từ nút chính sang nút phụ

  • Tại thời điểm tự động chuyển đổi dự phòng hoặc bảo trì, cuộc bầu chọn được thiết lập cho nút chính và một nút chính mới được bầu chọn

  • Sau khi phục hồi nút bị lỗi, nó lại tham gia vào bộ bản sao và hoạt động như một nút phụ

Một sơ đồ điển hình về sao chép MongoDB được hiển thị trong đó ứng dụng khách luôn tương tác với nút chính và nút chính sau đó sao chép dữ liệu sang các nút phụ

Các tính năng của bộ bản sao

  • Một cụm gồm N nút
  • Bất kỳ một nút nào cũng có thể là nút chính
  • Tất cả các hoạt động ghi chuyển đến chính
  • chuyển đổi dự phòng tự động
  • Tự động phục hồi
  • Đồng thuận bầu cử sơ bộ

Thiết lập một bộ bản sao

Trong hướng dẫn này, chúng tôi sẽ chuyển đổi phiên bản MongoDB độc lập thành một bộ bản sao. Để chuyển đổi sang bộ bản sao, sau đây là các bước -

  • Tắt máy chủ MongoDB đang chạy

  • Khởi động máy chủ MongoDB bằng cách chỉ định -- tùy chọn replSet. Sau đây là cú pháp cơ bản của --replSet -

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
3

Thí dụ

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
4
  • Nó sẽ bắt đầu một phiên bản mongod với tên rs0, trên cổng 27017

  • Bây giờ bắt đầu dấu nhắc lệnh và kết nối với phiên bản mongod này

  • Trong ứng dụng khách Mongo, hãy ra lệnh rs. started[] để bắt đầu một bộ bản sao mới

  • Để kiểm tra cấu hình bộ bản sao, hãy ra lệnh rs. conf[]. Để kiểm tra trạng thái của bộ bản sao, hãy sử dụng lệnh rs. tình trạng[]

Thêm thành viên vào bộ bản sao

Để thêm thành viên vào bộ bản sao, hãy bắt đầu phiên bản mongod trên nhiều máy. Bây giờ hãy bắt đầu một ứng dụng khách mongo và đưa ra lệnh rs. cộng[]

cú pháp

Cú pháp cơ bản của rs. lệnh add[] như sau -

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
5

Thí dụ

Giả sử tên ví dụ mongod của bạn là mongod1. net và nó đang chạy trên cổng 27017. Để thêm phiên bản này vào bộ bản sao, hãy ra lệnh rs. add[] trong máy khách Mongo

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
6

Bạn chỉ có thể thêm phiên bản mongod vào bộ bản sao khi bạn được kết nối với nút chính. Để kiểm tra xem bạn có được kết nối với chính hay không, hãy ra lệnh db. isMaster[] trong máy khách mongo

Sharding là quá trình lưu trữ các bản ghi dữ liệu trên nhiều máy và đó là cách tiếp cận của MongoDB để đáp ứng nhu cầu tăng trưởng dữ liệu. Khi kích thước của dữ liệu tăng lên, một máy đơn lẻ có thể không đủ để lưu trữ dữ liệu cũng như không cung cấp thông lượng đọc và ghi có thể chấp nhận được. Sharding giải quyết vấn đề với tỷ lệ ngang. Với sharding, bạn thêm nhiều máy hơn để hỗ trợ tăng trưởng dữ liệu và nhu cầu của hoạt động đọc và ghi

Tại sao Sharding?

  • Trong bản sao, tất cả ghi vào nút chính
  • Các truy vấn nhạy cảm về độ trễ vẫn chuyển sang chế độ chính
  • Bộ bản sao đơn có giới hạn 12 nút
  • Bộ nhớ không thể đủ lớn khi tập dữ liệu hoạt động lớn
  • Đĩa cục bộ không đủ lớn
  • Chia tỷ lệ dọc quá đắt

Phân mảnh trong MongoDB

Sơ đồ sau đây cho thấy sharding trong MongoDB sử dụng cụm sharding

Trong sơ đồ sau, có ba thành phần chính -

  • Phân đoạn - Phân đoạn được sử dụng để lưu trữ dữ liệu. Họ cung cấp tính sẵn sàng cao và tính nhất quán dữ liệu. Trong môi trường sản xuất, mỗi phân đoạn là một bộ bản sao riêng biệt

  • Máy chủ cấu hình - Máy chủ cấu hình lưu trữ siêu dữ liệu của cụm. Dữ liệu này chứa ánh xạ tập dữ liệu của cụm tới các phân đoạn. Bộ định tuyến truy vấn sử dụng siêu dữ liệu này để nhắm mục tiêu các hoạt động tới các phân đoạn cụ thể. Trong môi trường sản xuất, các cụm phân mảnh có chính xác 3 máy chủ cấu hình

  • Bộ định tuyến truy vấn - Bộ định tuyến truy vấn về cơ bản là các phiên bản mongo, giao diện với các ứng dụng khách và các hoạt động trực tiếp đến phân đoạn thích hợp. Bộ định tuyến truy vấn xử lý và nhắm mục tiêu các hoạt động tới các phân đoạn và sau đó trả về kết quả cho các máy khách. Một cụm sharded có thể chứa nhiều hơn một bộ định tuyến truy vấn để phân chia tải yêu cầu của máy khách. Một khách hàng gửi yêu cầu đến một bộ định tuyến truy vấn. Nói chung, một cụm sharded có nhiều bộ định tuyến truy vấn

Trong chương này, chúng ta sẽ xem cách tạo bản sao lưu trong MongoDB

Kết xuất dữ liệu MongoDB

Để tạo bản sao lưu cơ sở dữ liệu trong MongoDB, bạn nên sử dụng lệnh mongodump. Lệnh này sẽ kết xuất toàn bộ dữ liệu của máy chủ của bạn vào thư mục kết xuất. Có nhiều tùy chọn có sẵn để bạn có thể giới hạn lượng dữ liệu hoặc tạo bản sao lưu cho máy chủ từ xa của mình

cú pháp

Cú pháp cơ bản của lệnh mongodump như sau -

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
7

Thí dụ

Bắt đầu máy chủ mongod của bạn. Giả sử rằng máy chủ mongod của bạn đang chạy trên máy chủ cục bộ và cổng 27017, hãy mở dấu nhắc lệnh và chuyển đến thư mục bin của phiên bản mongodb của bạn và nhập lệnh mongodump

Consider the mycol collection has the following data

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
7

Lệnh sẽ kết nối với máy chủ đang chạy ở 127. 0. 0. 1 và cổng 27017 và sao lưu tất cả dữ liệu của máy chủ vào thư mục /bin/dump/. Sau đây là đầu ra của lệnh -

Sau đây là danh sách các tùy chọn khả dụng có thể được sử dụng với lệnh mongodump

Cú phápMô tảExamplemongodump --host HOST_NAME --port PORT_NUMBER Lệnh này sẽ sao lưu tất cả cơ sở dữ liệu của phiên bản mongod đã chỉ định. mongodump --host hướng dẫn điểm. com --port 27017mongodump --dbpath DB_PATH --out BACKUP_DIRECTORY Lệnh này sẽ chỉ sao lưu cơ sở dữ liệu được chỉ định tại đường dẫn đã chỉ định. mongodump --dbpath /data/db/ --out /data/backup/mongodump --collection COLLECTION --db DB_NAME Lệnh này sẽ chỉ sao lưu bộ sưu tập được chỉ định của cơ sở dữ liệu đã chỉ định. mongodump --collection mycol --db test

Khôi phục dữ liệu

Để khôi phục dữ liệu sao lưu, lệnh mongorestore của MongoDB được sử dụng. Lệnh này khôi phục tất cả dữ liệu từ thư mục sao lưu

cú pháp

Cú pháp cơ bản của lệnh mongorestore là -

echo 'deb //downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' 
   | sudo tee /etc/apt/sources.list.d/mongodb.list
9

Sau đây là đầu ra của lệnh -

Khi bạn đang chuẩn bị triển khai MongoDB, bạn nên cố gắng hiểu ứng dụng của mình sẽ hoạt động như thế nào trong quá trình sản xuất. Bạn nên phát triển một cách tiếp cận nhất quán, có thể lặp lại để quản lý môi trường triển khai của mình để bạn có thể giảm thiểu bất kỳ sự bất ngờ nào khi bạn đang trong quá trình sản xuất

Cách tiếp cận tốt nhất là kết hợp tạo nguyên mẫu thiết lập của bạn, tiến hành kiểm tra tải, theo dõi các chỉ số chính và sử dụng thông tin đó để mở rộng quy mô thiết lập của bạn. Phần quan trọng của phương pháp này là chủ động giám sát toàn bộ hệ thống của bạn - điều này sẽ giúp bạn hiểu hệ thống sản xuất của mình sẽ hoạt động như thế nào trước khi triển khai và xác định nơi bạn sẽ cần bổ sung công suất. Chẳng hạn, có cái nhìn sâu sắc về các đột biến tiềm năng trong việc sử dụng bộ nhớ của bạn, có thể giúp dập tắt một vụ cháy khóa ghi trước khi nó bắt đầu

Để theo dõi quá trình triển khai của bạn, MongoDB cung cấp một số lệnh sau –

mongostat

Lệnh này kiểm tra trạng thái của tất cả các phiên bản mongod đang chạy và trả về bộ đếm của các hoạt động cơ sở dữ liệu. Các bộ đếm này bao gồm chèn, truy vấn, cập nhật, xóa và con trỏ. Lệnh cũng hiển thị khi bạn gặp lỗi trang và hiển thị phần trăm khóa của bạn. Điều này có nghĩa là bạn sắp hết bộ nhớ, đạt đến khả năng ghi hoặc có một số vấn đề về hiệu suất

Để chạy lệnh, hãy bắt đầu phiên bản mongod của bạn. Trong một dấu nhắc lệnh khác, hãy chuyển đến thư mục bin của bản cài đặt mongodb của bạn và nhập mongostat

sudo apt-get update
0

Sau đây là đầu ra của lệnh -

cầy mangut

Lệnh này theo dõi và báo cáo hoạt động đọc và ghi của phiên bản MongoDB trên cơ sở bộ sưu tập. Theo mặc định, mongotop trả về thông tin theo từng giây, bạn có thể thay đổi thông tin này cho phù hợp. Bạn nên kiểm tra xem hoạt động đọc và ghi này có phù hợp với mục đích ứng dụng của bạn không và bạn không ghi quá nhiều lần ghi vào cơ sở dữ liệu cùng một lúc, đọc quá thường xuyên từ đĩa hoặc vượt quá kích thước cài đặt làm việc của bạn

Để chạy lệnh, hãy bắt đầu phiên bản mongod của bạn. Trong một dấu nhắc lệnh khác, hãy chuyển đến thư mục bin của bản cài đặt mongodb của bạn và nhập mongotop

sudo apt-get update
1

Sau đây là đầu ra của lệnh -

Để thay đổi lệnh mongotop để trả về thông tin ít thường xuyên hơn, hãy chỉ định một số cụ thể sau lệnh mongotop

sudo apt-get update
2

Ví dụ trên sẽ trả về giá trị cứ sau 30 giây

Ngoài các công cụ MongoDB, 10gen còn cung cấp dịch vụ giám sát được lưu trữ miễn phí, Dịch vụ quản lý MongoDB [MMS], cung cấp bảng điều khiển và cung cấp cho bạn chế độ xem các số liệu từ toàn bộ cụm của bạn

Trong chương này, chúng ta sẽ tìm hiểu cách thiết lập trình điều khiển MongoDB JDBC

Cài đặt

Trước khi bạn bắt đầu sử dụng MongoDB trong các chương trình Java của mình, bạn cần đảm bảo rằng bạn đã cài đặt trình điều khiển JDBC MongoDB và Java trên máy. Bạn có thể xem hướng dẫn Java để cài đặt Java trên máy của mình. Bây giờ, hãy để chúng tôi kiểm tra cách thiết lập trình điều khiển MongoDB JDBC

  • Bạn cần tải jar từ đường dẫn Download mongo. cái lọ. Đảm bảo tải xuống bản phát hành mới nhất của nó

  • Bạn cần bao gồm mongo. jar vào đường dẫn lớp của bạn

Kết nối với cơ sở dữ liệu

Để kết nối cơ sở dữ liệu, bạn cần chỉ định tên cơ sở dữ liệu, nếu cơ sở dữ liệu không tồn tại thì MongoDB sẽ tự động tạo nó

Sau đây là đoạn mã để kết nối với cơ sở dữ liệu -

sudo apt-get update
3

Bây giờ, hãy biên dịch và chạy chương trình trên để tạo cơ sở dữ liệu myDb của chúng tôi như hình bên dưới

sudo apt-get update
4

Khi thực thi, chương trình trên cung cấp cho bạn đầu ra sau

sudo apt-get update
5

Create a Collection

Để tạo một bộ sưu tập, phương thức createCollection[] của com. mongodb. khách hàng. Lớp MongoDatabase được sử dụng

Sau đây là đoạn mã để tạo một bộ sưu tập -

sudo apt-get update
6

Khi biên dịch, chương trình trên cho bạn kết quả sau -

sudo apt-get update
7

Lấy/Chọn một Bộ sưu tập

Để lấy/chọn một bộ sưu tập từ cơ sở dữ liệu, phương thức getCollection[] của com. mongodb. client. MongoDatabase class is used

Sau đây là chương trình lấy/chọn một bộ sưu tập -

sudo apt-get update
8

Khi biên dịch, chương trình trên cho bạn kết quả sau -

sudo apt-get update
9

Insert a Document

To insert a document into MongoDB, insert[] method of com. mongodb. client. MongoCollection class is used

Following is the code snippet to insert a document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
00

Khi biên dịch, chương trình trên cho bạn kết quả sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
01

Retrieve All Documents

To select all documents from the collection, find[] method of com. mongodb. client. MongoCollection class is used. This method returns a cursor, so you need to iterate this cursor

Following is the program to select all documents −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
02

Khi biên dịch, chương trình trên cho bạn kết quả sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
03

Update Document

To update a document from the collection, updateOne[] method of com. mongodb. client. MongoCollection class is used

Following is the program to select the first document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
04

Khi biên dịch, chương trình trên cho bạn kết quả sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
05

Xóa một tài liệu

To delete a document from the collection, you need to use the deleteOne[] method of the com. mongodb. client. MongoCollection class

Following is the program to delete a document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
06

Khi biên dịch, chương trình trên cho bạn kết quả sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
07

Dropping a Collection

To drop a collection from a database, you need to use the drop[] method of the com. mongodb. client. MongoCollection class

Following is the program to delete a collection −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
08

Khi biên dịch, chương trình trên cho bạn kết quả sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
09

Listing All the Collections

To list all the collections in a database, you need to use the listCollectionNames[] method of the com. mongodb. khách hàng. MongoDatabase class

Following is the program to list all the collections of a database −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
10

Khi biên dịch, chương trình trên cho bạn kết quả sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
11

Remaining MongoDB methods save[], limit[], skip[], sort[] etc. làm việc tương tự như được giải thích trong hướng dẫn tiếp theo

To use MongoDB with PHP, you need to use MongoDB PHP driver. Download the driver from the url Download PHP Driver. Đảm bảo tải xuống bản phát hành mới nhất của nó. Now unzip the archive and put php_mongo. dll in your PHP extension directory ["ext" by default] and add the following line to your php. ini file −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
12

Make a Connection and Select a Database

To make a connection, you need to specify the database name, if the database doesn't exist then MongoDB creates it automatically

Sau đây là đoạn mã để kết nối với cơ sở dữ liệu -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
13

When the program is executed, it will produce the following result −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
14

Create a Collection

Sau đây là đoạn mã để tạo một bộ sưu tập -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
15

When the program is executed, it will produce the following result −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
16

Insert a Document

To insert a document into MongoDB, insert[] method is used

Following is the code snippet to insert a document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
17

When the program is executed, it will produce the following result −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
18

Find All Documents

To select all documents from the collection, find[] method is used

Sau đây là đoạn mã để chọn tất cả các tài liệu -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
19

When the program is executed, it will produce the following result −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
20

Update a Document

To update a document, you need to use the update[] method

Trong ví dụ sau, chúng tôi sẽ cập nhật tiêu đề của tài liệu được chèn vào Hướng dẫn MongoDB. Following is the code snippet to update a document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
21

When the program is executed, it will produce the following result −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
22

Xóa một tài liệu

To delete a document, you need to use remove[] method

In the following example, we will remove the documents that has the title MongoDB Tutorial. Following is the code snippet to delete a document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
23

When the program is executed, it will produce the following result −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
24

In the above example, the second parameter is boolean type and used for justOne field of remove[] method

Remaining MongoDB methods findOne[], save[], limit[], skip[], sort[] etc. works same as explained above

Các mối quan hệ trong MongoDB thể hiện cách các tài liệu khác nhau có liên quan logic với nhau. Relationships can be modeled via Embedded and Referenced approaches. Such relationships can be either 1. 1, 1. N, N. 1 or N. N

Let us consider the case of storing addresses for users. So, one user can have multiple addresses making this a 1. mối quan hệ N

Following is the sample document structure of user document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
25

Following is the sample document structure of address document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
26

Modeling Embedded Relationships

In the embedded approach, we will embed the address document inside the user document

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
27

Cách tiếp cận này duy trì tất cả dữ liệu liên quan trong một tài liệu duy nhất, giúp dễ dàng truy xuất và bảo trì. Toàn bộ tài liệu có thể được truy xuất trong một truy vấn, chẳng hạn như -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
28

Lưu ý rằng trong truy vấn trên, db và người dùng lần lượt là cơ sở dữ liệu và bộ sưu tập

The drawback is that if the embedded document keeps on growing too much in size, it can impact the read/write performance

Mô hình hóa các mối quan hệ được tham chiếu

This is the approach of designing normalized relationship. In this approach, both the user and address documents will be maintained separately but the user document will contain a field that will reference the address document's id field

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
29

As shown above, the user document contains the array field address_ids which contains ObjectIds of corresponding addresses. Using these ObjectIds, we can query the address documents and get address details from there. With this approach, we will need two queries. first to fetch the address_ids fields from user document and second to fetch these addresses from address collection

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
30

As seen in the last chapter of MongoDB relationships, to implement a normalized database structure in MongoDB, we use the concept of Referenced Relationships also referred to as Manual References in which we manually store the referenced document's id inside other document. However, in cases where a document contains references from different collections, we can use MongoDB DBRefs

DBRefs vs Manual References

As an example scenario, where we would use DBRefs instead of manual references, consider a database where we are storing different types of addresses [home, office, mailing, etc. ] in different collections [address_home, address_office, address_mailing, etc]. Now, when a user collection's document references an address, it also needs to specify which collection to look into based on the address type. In such scenarios where a document references documents from many collections, we should use DBRefs

Using DBRefs

There are three fields in DBRefs −

  • $ref − This field specifies the collection of the referenced document

  • $id − This field specifies the _id field of the referenced document

  • $db − This is an optional field and contains the name of the database in which the referenced document lies

Consider a sample user document having DBRef field address as shown in the code snippet −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
31

The address DBRef field here specifies that the referenced address document lies in address_home collection under tutorialspoint database and has an id of 534009e4d852427820000002

The following code dynamically looks in the collection specified by $ref parameter [address_home in our case] for a document with id as specified by $id parameter in DBRef

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
32

The above code returns the following address document present in address_home collection −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
33

In this chapter, we will learn about covered queries

What is a Covered Query?

As per the official MongoDB documentation, a covered query is a query in which −

  • All the fields in the query are part of an index
  • All the fields returned in the query are in the same index

Since all the fields present in the query are part of an index, MongoDB matches the query conditions and returns the result using the same index without actually looking inside the documents. Since indexes are present in RAM, fetching data from indexes is much faster as compared to fetching data by scanning documents

Using Covered Queries

To test covered queries, consider the following document in the users collection −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
34

We will first create a compound index for the users collection on the fields gender and user_name using the following query −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
35

Now, this index will cover the following query −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
36

That is to say that for the above query, MongoDB would not go looking into database documents. Instead it would fetch the required data from indexed data which is very fast

Since our index does not include _id field, we have explicitly excluded it from result set of our query, as MongoDB by default returns _id field in every query. So the following query would not have been covered inside the index created above −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
37

Lastly, remember that an index cannot cover a query if −

  • Any of the indexed fields is an array
  • Any of the indexed fields is a subdocument

Analyzing queries is a very important aspect of measuring how effective the database and indexing design is. We will learn about the frequently used $explain and $hint queries

Using $explain

The $explain operator provides information on the query, indexes used in a query and other statistics. It is very useful when analyzing how well your indexes are optimized

In the last chapter, we had already created an index for the users collection on fields gender and user_name using the following query −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
35

Bây giờ chúng ta sẽ sử dụng $explain cho truy vấn sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
39

The above explain[] query returns the following analyzed result −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
40

We will now look at the fields in this result set −

  • The true value of indexOnly indicates that this query has used indexing

  • The cursor field specifies the type of cursor used. BTreeCursor type indicates that an index was used and also gives the name of the index used. BasicCursor indicates that a full scan was made without using any indexes

  • n indicates the number of documents matching returned

  • nscannedObjects indicates the total number of documents scanned

  • nscanned indicates the total number of documents or index entries scanned

Using $hint

The $hint operator forces the query optimizer to use the specified index to run a query. This is particularly useful when you want to test performance of a query with different indexes. For example, the following query specifies the index on fields gender and user_name to be used for this query −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
41

To analyze the above query using $explain −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
42

Model Data for Atomic Operations

The recommended approach to maintain atomicity would be to keep all the related information, which is frequently updated together in a single document using embedded documents. This would make sure that all the updates for a single document are atomic

Consider the following products document −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
43

In this document, we have embedded the information of the customer who buys the product in the product_bought_by field. Now, whenever a new customer buys the product, we will first check if the product is still available using product_available field. If available, we will reduce the value of product_available field as well as insert the new customer's embedded document in the product_bought_by field. We will use findAndModify command for this functionality because it searches and updates the document in the same go

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
44

Our approach of embedded document and using findAndModify query makes sure that the product purchase information is updated only if it the product is available. And the whole of this transaction being in the same query, is atomic

In contrast to this, consider the scenario where we may have kept the product availability and the information on who has bought the product, separately. In this case, we will first check if the product is available using the first query. Then in the second query we will update the purchase information. However, it is possible that between the executions of these two queries, some other user has purchased the product and it is no more available. Without knowing this, our second query will update the purchase information based on the result of our first query. This will make the database inconsistent because we have sold a product which is not available

Consider the following document of the users collection −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
45

The above document contains an address sub-document and a tags array

Indexing Array Fields

Suppose we want to search user documents based on the user’s tags. For this, we will create an index on tags array in the collection

Creating an index on array in turn creates separate index entries for each of its fields. So in our case when we create an index on tags array, separate indexes will be created for its values music, cricket and blogs

To create an index on tags array, use the following code −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
46

After creating the index, we can search on the tags field of the collection like this −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
47

To verify that proper indexing is used, use the following explain command −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
48

The above command resulted in "cursor" . "BtreeCursor tags_1" which confirms that proper indexing is used

Indexing Sub-Document Fields

Suppose that we want to search documents based on city, state and pincode fields. Since all these fields are part of address sub-document field, we will create an index on all the fields of the sub-document

For creating an index on all the three fields of the sub-document, use the following code −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
49

Once the index is created, we can search for any of the sub-document fields utilizing this index as follows −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
50

Hãy nhớ rằng biểu thức truy vấn phải tuân theo thứ tự của chỉ mục được chỉ định. Vì vậy, chỉ mục được tạo ở trên sẽ hỗ trợ các truy vấn sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
51

Nó cũng sẽ hỗ trợ truy vấn sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
52

Trong chương này, chúng ta sẽ tìm hiểu về Giới hạn lập chỉ mục và các thành phần khác của nó

chi phí bổ sung

Mỗi chỉ mục chiếm một số không gian cũng như gây ra chi phí trên mỗi lần chèn, cập nhật và xóa. Vì vậy, nếu bạn hiếm khi sử dụng bộ sưu tập của mình cho các thao tác đọc, bạn không nên sử dụng các chỉ mục

Sử dụng RAM

Vì các chỉ mục được lưu trữ trong RAM, bạn nên đảm bảo rằng tổng kích thước của chỉ mục không vượt quá giới hạn RAM. Nếu tổng kích thước tăng kích thước RAM, nó sẽ bắt đầu xóa một số chỉ mục, gây giảm hiệu suất

Giới hạn truy vấn

Lập chỉ mục không thể được sử dụng trong các truy vấn sử dụng -

  • Biểu thức chính quy hoặc toán tử phủ định như $nin, $not, v.v.
  • Các toán tử số học như $mod, v.v.
  • mệnh đề $where

Do đó, luôn luôn nên kiểm tra việc sử dụng chỉ mục cho các truy vấn của bạn

Giới hạn chính của chỉ mục

Bắt đầu từ phiên bản 2. 6, MongoDB sẽ không tạo chỉ mục nếu giá trị của trường chỉ mục hiện tại vượt quá giới hạn khóa chỉ mục

Chèn tài liệu vượt quá giới hạn khóa chỉ mục

MongoDB sẽ không chèn bất kỳ tài liệu nào vào bộ sưu tập được lập chỉ mục nếu giá trị trường được lập chỉ mục của tài liệu này vượt quá giới hạn khóa chỉ mục. Tương tự với các tiện ích mongorestore và mongoimport

Phạm vi tối đa

  • Một bộ sưu tập không thể có nhiều hơn 64 chỉ mục
  • Độ dài của tên chỉ mục không thể dài hơn 125 ký tự
  • Một chỉ mục phức hợp có thể có tối đa 31 trường được lập chỉ mục

Chúng ta đã sử dụng MongoDB Object Id trong tất cả các chương trước. Trong chương này, chúng ta sẽ tìm hiểu cấu trúc của ObjectId

ObjectId là loại BSON 12 byte có cấu trúc như sau -

  • 4 byte đầu tiên biểu thị số giây kể từ kỷ nguyên unix
  • 3 byte tiếp theo là định danh máy
  • 2 byte tiếp theo bao gồm id quá trình
  • 3 byte cuối cùng là giá trị bộ đếm ngẫu nhiên

MongoDB sử dụng ObjectIds làm giá trị mặc định của trường _id của mỗi tài liệu, được tạo trong khi tạo bất kỳ tài liệu nào. Sự kết hợp phức tạp của ObjectId làm cho tất cả các trường _id trở nên độc nhất

Tạo ObjectId mới

Để tạo một ObjectId mới, hãy sử dụng đoạn mã sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
53

Câu lệnh trên trả về id được tạo duy nhất sau đây -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
54

Thay vì MongoDB tạo ObjectId, bạn cũng có thể cung cấp id 12 byte -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
55

Tạo dấu thời gian của tài liệu

Vì _id ObjectId theo mặc định lưu trữ dấu thời gian 4 byte, nên trong hầu hết các trường hợp, bạn không cần lưu trữ thời gian tạo của bất kỳ tài liệu nào. Bạn có thể lấy thời gian tạo tài liệu bằng phương thức getTimestamp -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
56

Điều này sẽ trả về thời gian tạo tài liệu này ở định dạng ngày ISO -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
57

Chuyển đổi ObjectId thành Chuỗi

Trong một số trường hợp, bạn có thể cần giá trị của ObjectId ở định dạng chuỗi. Để chuyển đổi ObjectId thành chuỗi, hãy sử dụng đoạn mã sau –

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
58

Đoạn mã trên sẽ trả về định dạng chuỗi của Hướng dẫn -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
59

Theo tài liệu MongoDB, Map-reduce là một mô hình xử lý dữ liệu để cô đọng khối lượng dữ liệu lớn thành các kết quả tổng hợp hữu ích. MongoDB sử dụng lệnh mapReduce cho các thao tác thu nhỏ bản đồ. MapReduce thường được sử dụng để xử lý các tập dữ liệu lớn

Lệnh MapReduce

Sau đây là cú pháp của lệnh mapReduce cơ bản -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
60

Trước tiên, hàm map-reduce truy vấn bộ sưu tập, sau đó ánh xạ các tài liệu kết quả để phát ra các cặp khóa-giá trị, sau đó được giảm dựa trên các khóa có nhiều giá trị

Trong cú pháp trên -

  • map là một hàm javascript ánh xạ một giá trị bằng một khóa và tạo ra một cặp khóa-giá trị

  • giảm là một chức năng javascript làm giảm hoặc nhóm tất cả các tài liệu có cùng khóa

  • out chỉ định vị trí của kết quả truy vấn thu nhỏ bản đồ

  • truy vấn chỉ định tiêu chí lựa chọn tùy chọn để chọn tài liệu

  • sắp xếp chỉ định tiêu chí sắp xếp tùy chọn

  • giới hạn chỉ định số lượng tài liệu tối đa tùy chọn được trả lại

Sử dụng MapReduce

Xem xét cấu trúc tài liệu sau lưu trữ bài đăng của người dùng. Tài liệu lưu trữ user_name của người dùng và trạng thái của bài đăng

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
61

Bây giờ, chúng ta sẽ sử dụng hàm mapReduce trên bộ sưu tập bài đăng của mình để chọn tất cả các bài đăng đang hoạt động, nhóm chúng trên cơ sở user_name và sau đó đếm số lượng bài đăng của mỗi người dùng bằng đoạn mã sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
62

Truy vấn mapReduce ở trên đưa ra kết quả sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
63

Kết quả cho thấy có tổng cộng 4 tài liệu phù hợp với truy vấn [trạng thái. "hoạt động"], chức năng bản đồ đã tạo ra 4 tài liệu với các cặp khóa-giá trị và cuối cùng chức năng giảm đã nhóm các tài liệu được ánh xạ có cùng khóa thành 2

To see the result of this mapReduce query, use the find operator −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
64

The above query gives the following result which indicates that both users tom and mark have two posts in active states −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
65

In a similar manner, MapReduce queries can be used to construct large complex aggregation queries. The use of custom Javascript functions make use of MapReduce which is very flexible and powerful

Starting from version 2. 4, MongoDB started supporting text indexes to search inside string content. The Text Search uses stemming techniques to look for specified words in the string fields by dropping stemming stop words like a, an, the, etc. At present, MongoDB supports around 15 languages

Enabling Text Search

Initially, Text Search was an experimental feature but starting from version 2. 6, the configuration is enabled by default. Nhưng nếu bạn đang sử dụng phiên bản MongoDB trước đó, bạn phải bật tìm kiếm văn bản bằng đoạn mã sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
66

Creating Text Index

Consider the following document under posts collection containing the post text and its tags −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
67

We will create a text index on post_text field so that we can search inside our posts' text −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
68

Using Text Index

Bây giờ chúng tôi đã tạo chỉ mục văn bản trên trường post_text, chúng tôi sẽ tìm kiếm tất cả các bài đăng có từ hướng dẫn điểm trong văn bản của họ

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
69

The above command returned the following result documents having the word tutorialspoint in their post text −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
70

If you are using old versions of MongoDB, you have to use the following command −

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
71

Sử dụng Tìm kiếm văn bản cải thiện đáng kể hiệu quả tìm kiếm so với tìm kiếm thông thường

Xóa chỉ mục văn bản

Để xóa một chỉ mục văn bản hiện có, trước tiên hãy tìm tên của chỉ mục bằng truy vấn sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
72

Sau khi nhận được tên chỉ mục của bạn từ truy vấn trên, hãy chạy lệnh sau. Ở đây, post_text_text là tên của chỉ mục

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
73

Biểu thức chính quy thường được sử dụng trong tất cả các ngôn ngữ để tìm kiếm một mẫu hoặc từ trong bất kỳ chuỗi nào. MongoDB cũng cung cấp chức năng của biểu thức chính quy để so khớp mẫu chuỗi bằng cách sử dụng toán tử $regex. MongoDB sử dụng PCRE [Biểu thức chính quy tương thích Perl] làm ngôn ngữ biểu thức chính quy

Không giống như tìm kiếm văn bản, chúng ta không cần thực hiện bất kỳ cấu hình hoặc lệnh nào để sử dụng các biểu thức chính quy

Xem xét cấu trúc tài liệu sau trong tuyển tập bài viết có chứa văn bản bài đăng và các thẻ của nó -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
67

Sử dụng biểu thức regex

Truy vấn regex sau đây tìm kiếm tất cả các bài viết có chứa chuỗi tutorialspoint trong đó -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
75

Truy vấn tương tự cũng có thể được viết là -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
76

Sử dụng Biểu thức regex không phân biệt chữ hoa chữ thường

Để làm cho trường hợp tìm kiếm không nhạy cảm, chúng tôi sử dụng tham số $options với giá trị $i. Lệnh sau sẽ tìm kiếm các chuỗi có từ tutorialspoint, bất kể chữ hoa hay chữ thường -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
77

Một trong những kết quả được trả về từ truy vấn này là tài liệu sau có chứa từ hướng dẫn trong các trường hợp khác nhau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
78

Sử dụng regex cho các phần tử mảng

Chúng ta cũng có thể sử dụng khái niệm regex trên trường mảng. Điều này đặc biệt rất quan trọng khi chúng tôi triển khai chức năng của các thẻ. Vì vậy, nếu bạn muốn tìm kiếm tất cả các bài đăng có thẻ bắt đầu từ từ hướng dẫn [hướng dẫn hoặc hướng dẫn hoặc điểm hướng dẫn hoặc hướng dẫn php], bạn có thể sử dụng đoạn mã sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
79

Tối ưu hóa truy vấn biểu thức chính quy

  • Nếu các trường tài liệu được lập chỉ mục, truy vấn sẽ sử dụng các giá trị được lập chỉ mục để khớp với biểu thức chính quy. Điều này làm cho tìm kiếm rất nhanh so với biểu thức chính quy quét toàn bộ bộ sưu tập

  • Nếu biểu thức chính quy là biểu thức tiền tố, thì tất cả các kết quả phù hợp có nghĩa là bắt đầu bằng một ký tự chuỗi nhất định. cho e. g. , nếu biểu thức chính quy là ^tut, thì truy vấn chỉ phải tìm kiếm những chuỗi bắt đầu bằng tut

RockMongo là một công cụ quản trị MongoDB mà bạn có thể quản lý máy chủ, cơ sở dữ liệu, bộ sưu tập, tài liệu, chỉ mục, v.v. Nó cung cấp một cách rất thân thiện với người dùng để đọc, viết và tạo tài liệu. Nó tương tự như công cụ PHPMyAdmin cho PHP và MySQL

Đang tải xuống RockMongo

Bạn có thể tải xuống phiên bản mới nhất của RockMongo từ đây. https. //github. com/iwind/rockmongo

Cài đặt RockMongo

Sau khi tải xuống, bạn có thể giải nén gói trong thư mục gốc của máy chủ và đổi tên thư mục đã giải nén thành rockmongo. Mở bất kỳ trình duyệt web nào và truy cập chỉ mục. trang php từ thư mục rockmongo. Nhập admin/admin làm tên người dùng/mật khẩu tương ứng

Làm việc với RockMongo

Bây giờ chúng ta sẽ xem xét một số thao tác cơ bản mà bạn có thể thực hiện với RockMongo

Tạo cơ sở dữ liệu mới

Để tạo cơ sở dữ liệu mới, hãy nhấp vào tab Cơ sở dữ liệu. Nhấp vào Tạo cơ sở dữ liệu mới. Trên màn hình tiếp theo, cung cấp tên của cơ sở dữ liệu mới và nhấp vào Tạo. Bạn sẽ thấy một cơ sở dữ liệu mới được thêm vào trong bảng điều khiển bên trái

Tạo bộ sưu tập mới

Để tạo một bộ sưu tập mới bên trong cơ sở dữ liệu, hãy nhấp vào cơ sở dữ liệu đó từ bảng điều khiển bên trái. Nhấp vào liên kết Bộ sưu tập mới trên đầu trang. Cung cấp tên bắt buộc của bộ sưu tập. Đừng lo lắng về các trường khác của Is Capped, Size và Max. Nhấp vào Tạo. Một bộ sưu tập mới sẽ được tạo và bạn có thể nhìn thấy nó trong bảng điều khiển bên trái

Tạo tài liệu mới

Để tạo một tài liệu mới, hãy bấm vào bộ sưu tập mà bạn muốn thêm tài liệu. Khi bạn bấm vào một bộ sưu tập, bạn sẽ có thể xem tất cả các tài liệu trong bộ sưu tập đó được liệt kê ở đó. Để tạo một tài liệu mới, hãy nhấp vào liên kết Chèn ở trên cùng. Bạn có thể nhập dữ liệu của tài liệu ở định dạng JSON hoặc mảng và nhấp vào Lưu

Xuất/Nhập dữ liệu

Để nhập/xuất dữ liệu của bất kỳ bộ sưu tập nào, hãy nhấp vào bộ sưu tập đó rồi nhấp vào liên kết Xuất/Nhập ở bảng trên cùng. Thực hiện theo các hướng dẫn tiếp theo để xuất dữ liệu của bạn ở định dạng zip, sau đó nhập cùng một tệp zip để nhập lại dữ liệu

GridFS là đặc tả MongoDB để lưu trữ và truy xuất các tệp lớn như hình ảnh, tệp âm thanh, tệp video, v.v. Nó là một loại hệ thống tệp để lưu trữ tệp nhưng dữ liệu của nó được lưu trữ trong bộ sưu tập MongoDB. GridFS có khả năng lưu trữ các tệp thậm chí còn lớn hơn giới hạn kích thước tài liệu của nó là 16MB

GridFS chia tệp thành các phần và lưu trữ từng phần dữ liệu trong một tài liệu riêng biệt, mỗi phần có kích thước tối đa 255k

GridFS theo mặc định sử dụng hai bộ sưu tập fs. tập tin và fs. khối để lưu trữ siêu dữ liệu của tệp và các khối. Mỗi đoạn được xác định bởi trường _id ObjectId duy nhất của nó. các fs. các tệp đóng vai trò là tài liệu gốc. Trường files_id trong fs. tài liệu chunk liên kết chunk với cha của nó

Sau đây là một tài liệu mẫu của fs. bộ sưu tập tệp -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
80

Tài liệu chỉ định tên tệp, kích thước khối, ngày tải lên và độ dài

Sau đây là một tài liệu mẫu của fs. tài liệu khối -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
81

Thêm tệp vào GridFS

Bây giờ, chúng tôi sẽ lưu trữ một tệp mp3 bằng GridFS bằng lệnh put. Đối với điều này, chúng tôi sẽ sử dụng mongofiles. exe có trong thư mục bin của thư mục cài đặt MongoDB

Mở dấu nhắc lệnh của bạn, điều hướng đến mongofiles. exe trong thư mục bin của thư mục cài đặt MongoDB và nhập mã sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
82

Ở đây, gridfs là tên của cơ sở dữ liệu mà tệp sẽ được lưu trữ. Nếu không có cơ sở dữ liệu, MongoDB sẽ tự động tạo một tài liệu mới một cách nhanh chóng. Bài hát. mp3 là tên của tệp được tải lên. Để xem tài liệu của tệp trong cơ sở dữ liệu, bạn có thể sử dụng truy vấn find -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
83

Lệnh trên trả về tài liệu sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
84

Chúng ta cũng có thể thấy tất cả các khối có trong fs. bộ sưu tập khối liên quan đến tệp được lưu trữ với mã sau, sử dụng id tài liệu được trả về trong truy vấn trước đó -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
85

Trong trường hợp của tôi, truy vấn trả về 40 tài liệu nghĩa là toàn bộ tài liệu mp3 được chia thành 40 khối dữ liệu

Các bộ sưu tập được giới hạn là các bộ sưu tập hình tròn có kích thước cố định tuân theo thứ tự chèn để hỗ trợ hiệu suất cao cho các thao tác tạo, đọc và xóa. Theo thông tư, điều đó có nghĩa là khi hết kích thước cố định được phân bổ cho bộ sưu tập, nó sẽ bắt đầu xóa tài liệu cũ nhất trong bộ sưu tập mà không cung cấp bất kỳ lệnh rõ ràng nào

Các bộ sưu tập được giới hạn hạn chế các bản cập nhật cho tài liệu nếu bản cập nhật dẫn đến kích thước tài liệu tăng lên. Vì các bộ sưu tập được giới hạn lưu trữ tài liệu theo thứ tự lưu trữ trên đĩa, nó đảm bảo rằng kích thước tài liệu không làm tăng kích thước được phân bổ trên đĩa. Các bộ sưu tập được giới hạn là tốt nhất để lưu trữ thông tin nhật ký, dữ liệu bộ đệm hoặc bất kỳ dữ liệu khối lượng lớn nào khác

Tạo bộ sưu tập giới hạn

Để tạo một bộ sưu tập giới hạn, chúng tôi sử dụng lệnh createCollection bình thường nhưng với tùy chọn giới hạn là đúng và chỉ định kích thước tối đa của bộ sưu tập theo byte

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
86

Ngoài kích thước bộ sưu tập, chúng tôi cũng có thể giới hạn số lượng tài liệu trong bộ sưu tập bằng tham số max -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
87

Nếu bạn muốn kiểm tra xem một bộ sưu tập có bị giới hạn hay không, hãy sử dụng lệnh isCapped sau đây -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
88

Nếu có một bộ sưu tập hiện có mà bạn dự định chuyển đổi sang giới hạn, bạn có thể thực hiện điều đó bằng đoạn mã sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
89

Mã này sẽ chuyển đổi các bài đăng bộ sưu tập hiện tại của chúng tôi thành bộ sưu tập giới hạn

Truy vấn bộ sưu tập giới hạn

Theo mặc định, truy vấn tìm kiếm trên bộ sưu tập được giới hạn sẽ hiển thị kết quả theo thứ tự chèn. Nhưng nếu bạn muốn các tài liệu được truy xuất theo thứ tự ngược lại, hãy sử dụng lệnh sắp xếp như trong đoạn mã sau -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
90

Có một vài điểm quan trọng khác liên quan đến các bộ sưu tập giới hạn đáng để biết -

  • Chúng tôi không thể xóa tài liệu khỏi bộ sưu tập giới hạn

  • Không có chỉ mục mặc định nào có trong bộ sưu tập giới hạn, thậm chí không có trên trường _id

  • Trong khi chèn một tài liệu mới, MongoDB không thực sự phải tìm một nơi để chứa tài liệu mới trên đĩa. Nó có thể chèn một cách mù quáng tài liệu mới vào phần đuôi của bộ sưu tập. Điều này làm cho thao tác chèn trong bộ sưu tập giới hạn rất nhanh

  • Tương tự, trong khi đọc tài liệu, MongoDB trả về tài liệu theo thứ tự như trên đĩa. Điều này làm cho thao tác đọc rất nhanh

MongoDB không có chức năng tăng tự động vượt trội, như cơ sở dữ liệu SQL. Theo mặc định, nó sử dụng ObjectId 12 byte cho trường _id làm khóa chính để nhận dạng duy nhất các tài liệu. Tuy nhiên, có thể có các tình huống mà chúng ta có thể muốn trường _id có một số giá trị tăng tự động khác với ObjectId

Vì đây không phải là một tính năng mặc định trong MongoDB, nên chúng tôi sẽ lập trình đạt được chức năng này bằng cách sử dụng bộ sưu tập bộ đếm theo đề xuất của tài liệu MongoDB

Sử dụng bộ sưu tập truy cập

Xem xét tài liệu sản phẩm sau. Chúng tôi muốn trường _id là một chuỗi số nguyên tăng dần tự động bắt đầu từ 1,2,3,4 cho đến n

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
91

Đối với điều này, hãy tạo một bộ sưu tập bộ đếm, bộ sưu tập này sẽ theo dõi giá trị chuỗi cuối cùng cho tất cả các trường chuỗi

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
92

Bây giờ, chúng ta sẽ chèn tài liệu sau vào bộ sưu tập counters với productid làm khóa của nó -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
93

Trường sequence_value theo dõi giá trị cuối cùng của chuỗi

Sử dụng đoạn mã sau để chèn tài liệu trình tự này vào bộ sưu tập bộ đếm -

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
94

Tạo chức năng Javascript

Bây giờ, chúng ta sẽ tạo một hàm getNextSequenceValue sẽ lấy tên dãy làm đầu vào, tăng số thứ tự lên 1 và trả về số thứ tự được cập nhật. Trong trường hợp của chúng tôi, tên trình tự là productid

C:\>wmic os get osarchitecture
OSArchitecture
64-bit
C:\>
95

Sử dụng chức năng Javascript

Bây giờ chúng ta sẽ sử dụng hàm getNextSequenceValue trong khi tạo tài liệu mới và gán giá trị chuỗi được trả về làm trường _id của tài liệu

Làm cách nào để lấy dữ liệu bộ sưu tập trong MongoDB?

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

Làm cách nào để kiểm tra xem bộ sưu tập có tồn tại trong MongoDB không?

Sử dụng Lớp DB . Nếu không có cơ sở dữ liệu, MongoDB sẽ tự động tạo một. Ở đây, phương thức collectionExists sẽ trả về true nếu bộ sưu tập tồn tại, ngược lại là false .

Làm cách nào để hiển thị tài liệu trong MongoDB?

Cú pháp. phương thức find[] sẽ hiển thị tất cả tài liệu theo cách không có cấu trúc.

Chủ Đề