Có bao nhiêu kiểu dữ liệu trong MongoDB?

Có nhiều loại dữ liệu được sử dụng và được hỗ trợ trong MongoDB. Các kiểu dữ liệu phổ biến nhất của MongoDB là

Mảng

Mảng là một biến duy nhất có thể lưu trữ nhiều giá trị cùng một lúc. Một mảng trong MongoDB được sử dụng để chứa nhiều giá trị dưới một khóa duy nhất

Boolean

Kiểu dữ liệu boolean chỉ bao gồm hai giá trị. 0 hoặc 1 (tôi. e, TRUE hoặc FALSE)

Ngày

Để chỉ định một ngày giờ cụ thể hoặc để lưu trữ ngày giờ hiện tại ở định dạng thời gian unix, kiểu dữ liệu Date được sử dụng trong MongoDB

Kép

Double cũng đại diện cho tất cả các số thập phân và số mũ

số nguyên

Tất cả các số không phải là số thập phân được gọi là Số nguyên. Kích thước của một số nguyên phụ thuộc vào máy chủ;

Phím Tối thiểu/Tối đa

Để so sánh một giá trị với các phần tử bson thấp nhất và cao nhất, kiểu dữ liệu Min/Max được sử dụng trong MongoDB

Vô giá trị

Như tên cho thấy, loại dữ liệu NULL được sử dụng để biểu thị không có giá trị hoặc giá trị bằng không

Sự vật

Bất cứ thứ gì có trạng thái và hành vi đều có thể được gọi là Đối tượng, có thể là vật lý hoặc logic. Đối tượng là một loại dữ liệu trong MongoDB thường được sử dụng cho các tài liệu nhúng

Sợi dây

Một dãy các ký tự, được lưu trữ bên trong dưới dạng một mảng các ký tự được gọi là chuỗi. Chuỗi UTF-8 dùng để lưu trữ dữ liệu trong MongoDB

Biểu tượng

Biểu tượng là một loại dữ liệu duy nhất được hỗ trợ bởi MongoDB, được sử dụng cho các ngôn ngữ sử dụng một loại cụ thể

Sau đây là danh sách các kiểu dữ liệu có thể sử dụng trong MongoDB

Kiểu dữ liệuDescriptionStringString là kiểu dữ liệu được sử dụng phổ biến nhất. Nó được sử dụng để lưu trữ dữ liệu. Một chuỗi phải là UTF 8 hợp lệ trong mongodb. Số nguyênSố nguyên được sử dụng để lưu trữ giá trị số. Nó có thể là 32 bit hoặc 64 bit tùy thuộc vào máy chủ bạn đang sử dụng. Boolean Kiểu dữ liệu này được sử dụng để lưu trữ các giá trị boolean. Nó chỉ hiển thị giá trị CÓ/KHÔNG. Kiểu dữ liệu Double Double lưu trữ các giá trị dấu phẩy động. Phím Min/MaxKiểu dữ liệu này so sánh một giá trị với các phần tử bson thấp nhất và cao nhất. MảngKiểu dữ liệu này được sử dụng để lưu trữ một danh sách hoặc nhiều giá trị vào một khóa duy nhất. Đối tượng Loại dữ liệu đối tượng được sử dụng cho tài liệu nhúng. NullIt được sử dụng để lưu trữ các giá trị null. Biểu tượngNó thường được sử dụng cho các ngôn ngữ sử dụng một loại cụ thể. Ngày Loại dữ liệu này lưu trữ ngày hoặc giờ hiện tại ở định dạng thời gian unix. Nó giúp bạn có thể chỉ định ngày giờ của riêng mình bằng cách tạo đối tượng ngày tháng và chuyển giá trị ngày, tháng, năm vào đó

Khi chúng tôi lưu trữ các cặp khóa-giá trị có liên quan cùng nhau trong một tập hợp các cặp khóa-giá trị, tập hợp này được gọi là tài liệu. Dưới đây là một ví dụ về tài liệu chứa dữ liệu về một nhân viên

{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}

Giới thiệu về kiểu dữ liệu

Trong tài liệu trên, bạn có thể thấy rằng chúng tôi đã lưu trữ nhiều giá trị cho một nhân viên. Điều này rất giống với cách chúng tôi lưu trữ dữ liệu trong một hàng trong RDBMS điển hình. Các tài liệu tương tự được lưu trữ cùng nhau trong một bộ sưu tập. Bạn có thể coi các bộ sưu tập tương đương với NoSQL của một bảng RDBMS với một số điểm khác biệt chính mà chúng ta sẽ không thảo luận trong bài viết này

Trong tài liệu trên, bạn có thể thấy rằng chúng tôi có 4 cặp khóa-giá trị khác nhau. Các giá trị có thể thuộc các loại khác nhau, ví dụ: trong trường hợp này, employee_name và employee_skills có các giá trị kiểu Chuỗi, employee_salary thuộc loại số và employee_status thuộc loại boolean

Có các loại dữ liệu này (và hơn thế nữa) trong MongoDB cho phép chúng tôi lưu trữ dữ liệu ở định dạng hiệu quả hơn và cũng thực hiện các truy vấn mạnh mẽ và hiệu quả cao trên dữ liệu được lưu trữ

Sử dụng đúng kiểu dữ liệu để lưu trữ các trường dữ liệu trong tài liệu là rất quan trọng đối với sự thành công của hệ thống cơ sở dữ liệu. Dưới đây là một số loại dữ liệu được sử dụng nhiều nhất có sẵn trong MongoDB

  • Sợi dây
  • số nguyên
  • Boolean
  • Kép
  • Ngày
  • Phím trộn/tối đa
  • Mảng
  • Dấu thời gian
  • Sự vật
  • Vô giá trị
  • Biểu tượng
  • Biểu thức chính quy

Chúng ta sẽ xem xét tất cả những điều này với các ví dụ nhưng trước đó, hãy xem JSON và BSON để hiểu cách MongoDB lưu trữ dữ liệu

JSON và BSON

JSON là viết tắt của Ký hiệu đối tượng JavaScript. Đây là một định dạng rất phổ biến được sử dụng bởi các API và dịch vụ web để trả lại dữ liệu cho khách hàng. Định dạng này được sử dụng rộng rãi vì tính đơn giản và dễ phân tích cú pháp. Hầu hết các ngôn ngữ lập trình hiện đại không cần lớp ứng dụng bổ sung để phân tích dữ liệu JSON

Các đối tượng JSON là các thùng chứa liên kết đơn giản, trong đó dữ liệu được lưu trữ dưới dạng một tập hợp các cặp khóa-giá trị. Trong trường hợp này, một khóa được ánh xạ tới một giá trị (có thể là một số, chuỗi, hàm hoặc thậm chí là một đối tượng khác)

MongoDB cũng lưu trữ dữ liệu dưới dạng tài liệu JSON nhưng dữ liệu JSON được mã hóa nhị phân. Điều này dẫn đến BSON. BSON chỉ đơn giản là viết tắt của JSON nhị phân. Cấu trúc nhị phân của BSON mã hóa thông tin về loại và độ dài, cho phép nó được phân tích cú pháp nhanh hơn nhiều và do đó mang lại hiệu suất tốt hơn

Tóm lại, MongoDB lưu trữ dữ liệu ở định dạng BSON cả nội bộ và qua mạng, nhưng điều đó không có nghĩa là bạn không thể coi MongoDB là cơ sở dữ liệu JSON. Mọi thứ bạn có thể trình bày trong JSON đều có thể được lưu trữ nguyên bản trong MongoDB và được truy xuất dễ dàng trong JSON

Các kiểu dữ liệu MongoDB khác nhau

Hãy cùng xem xét từng loại dữ liệu do MongoDB cung cấp với các ví dụ và hiểu các trường hợp sử dụng tốt nhất cho chúng

  • Chuỗi - Đây là một trong những kiểu dữ liệu đơn giản nhất và được sử dụng nhiều nhất. Kiểu chuỗi được sử dụng để biểu diễn văn bản một cách đơn giản. Các chuỗi trong BSON là UTF-8 cho phép chúng tôi biểu thị hầu hết các ký tự quốc tế trong chuỗi BSON mà không gặp bất kỳ sự cố nào. Dưới đây là một số ví dụ về giá trị chuỗi trong tài liệu
{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}

Tài liệu trên có hai khóa có giá trị kiểu String. Cụ thể, employee_name và employee_skills có các giá trị Chuỗi. Đây là những giá trị đơn giản nhất và được sử dụng để đại diện cho một loạt các ký tự

  • Số nguyên - Kiểu dữ liệu số nguyên được sử dụng để lưu trữ các giá trị số. Nó có thể lưu trữ các số nguyên 32 bit hoặc 64 bit tùy thuộc vào máy chủ. Dưới đây là một ví dụ về một số nguyên được lưu trữ trong một tài liệu
{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}

Khóa employee_salary lưu trữ một giá trị số và do đó nó thuộc kiểu số nguyên

  • Double - Kiểu dữ liệu double được sử dụng để lưu trữ các giá trị số với dấu phẩy động 8 byte (64-bit IEEE 754 floating point). Dưới đây là ví dụ về tài liệu chứa giá trị kép trong trường employee_score
{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_score":  97.67,
"employee_status":  true,
}
  • Boolean - Kiểu dữ liệu boolean được sử dụng để lưu trữ các giá trị boolean (true hoặc false). Trong ví dụ dưới đây, bạn có thể thấy rằng trường employee_status lưu trữ giá trị true, do đó trường này thuộc loại boolean
{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_score":  97.67,
"employee_status":  true,
}

Booleans sử dụng ít bộ nhớ hơn một số nguyên hoặc chuỗi và tránh mọi tác dụng phụ không mong muốn của việc so sánh

  • Mảng - Mảng được sử dụng để lưu trữ nhiều giá trị cùng loại dưới một khóa duy nhất. Đây là một ví dụ về một mảng được lưu trữ trong một tài liệu
{
"employee_name":  "John Doe",
"employee_skills":  ["UI Design", "Graphic Design", "2D Animation"],
"employee_score":  97.67,
"employee_status":  true,
}

Trong ví dụ trên, trường employee_skills chứa một mảng kiểu String trong đó mỗi giá trị trong mảng là một String

Đây là một ví dụ khác trong đó thay vì một mảng thuộc loại đơn giản (Chuỗi), các tài liệu được nhúng trong mảng

{
"item_code": "1234-ABCD",
"item_price": 49.99,
"item_stock": [{
"warehouse": "Warehouse A",
"qty": 1200
}, {
"warehouse": "Warehouse B",
"qty": 900
}],
}

Trong tài liệu trên, trường item_stock chứa một mảng các tài liệu nhúng

  • Ngày - Kiểu dữ liệu ngày được sử dụng để lưu trữ ngày và giờ ở định dạng thời gian Unix. Dấu thời gian Unix có thể dễ dàng chuyển đổi sang và từ đối tượng Ngày JavaScript. Ngày là một số nguyên 64 bit đại diện cho số mili giây kể từ kỷ nguyên Unix (ngày 1 tháng 1 năm 1970). Điều này dẫn đến một phạm vi ngày có thể biểu thị được khoảng 290 triệu năm trong quá khứ và tương lai

Dưới đây là một ví dụ về cách một ngày được lưu trữ trong một tài liệu

{
"student_name": "Bob Stan",
"student_dob": ISODate("2006-02-10T10:50:42.389Z"),
"student_marks": 78.98
}

Trong ví dụ trên, ngày được lưu trữ có thể dễ dàng được chuyển đổi sang định dạng có thể đọc được bằng cách sử dụng JavaScript mới Date("2006-02-10T10. 50. 42. chức năng 389Z"). Nó sẽ trả về đầu ra sau

Thứ 6 ngày 10 tháng 2 năm 2006 16. 20. 42 GMT+0530 (Giờ chuẩn Ấn Độ)

Trong nội bộ, các đối tượng Ngày được lưu trữ dưới dạng số nguyên 64 bit có dấu biểu thị số mili giây kể từ kỷ nguyên Unix (ngày 1 tháng 1 năm 1970).

  • Các phím Min/Max - Các phím Min và Max đều là các loại dữ liệu nội bộ. Nó đượ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
  • Đối tượng - Loại dữ liệu này được sử dụng để lưu trữ các tài liệu được nhúng trong một tài liệu. Hãy xem một ví dụ để hiểu rõ hơn
________số 8

Trong ví dụ trên, trường item_dimensions là một tài liệu được nhúng vì nó chứa tập hợp các cặp khóa-giá trị riêng. Do đó, trường này thuộc loại Đối tượng

  • Dấu thời gian - Loại dấu thời gian là một loại đặc biệt để sử dụng MongoDB nội bộ và không được liên kết với loại Ngày thông thường. Loại dấu thời gian bên trong này là một giá trị 64 bit trong đó 32 bit quan trọng nhất là giây kể từ kỷ nguyên Unix và 32 bit ít quan trọng nhất là thứ tự tăng dần cho các hoạt động trong một giây nhất định

Đây là cách giá trị dấu thời gian trông như thế nào trong tài liệu khi nó được truy vấn

{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}
0

Kiểu dữ liệu dấu thời gian thường được sử dụng để theo dõi thời gian tạo/chỉnh sửa/cập nhật tài liệu. Hàm Timestamp() mới được sử dụng trong quá trình chèn và máy chủ sẽ tự động thêm dấu thời gian vào trường

  • Null - Kiểu dữ liệu null được sử dụng để lưu trữ các giá trị null hoặc không tồn tại. Đây là cách một trường trong tài liệu có giá trị null trông như thế nào khi được truy vấn
{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}
1

Điều này cũng tương tự với tài liệu sau khi trường này hoàn toàn không có

{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}
2
  • ObjectID - Kiểu dữ liệu này được sử dụng để lưu trữ ID duy nhất của tài liệu. Không có hai tài liệu nào trong một bộ sưu tập có thể có cùng một ID đối tượng. Đó là một giá trị 12 byte chứa dấu thời gian, giá trị ngẫu nhiên và giá trị bộ đếm tăng dần, tất cả được kết hợp với nhau để tạo một ID duy nhất

Đây là một ví dụ

{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}
3

Trường _id được thêm tự động cho mọi tài liệu nếu bạn không chỉ định rõ ràng một trường với loại ObjectID

  • Nhị phân - Kiểu dữ liệu này được sử dụng để lưu trữ dữ liệu nhị phân trong một trường. Loại dữ liệu này tương ứng với loại Blob trong DBMS quan hệ. Tuy nhiên, có giới hạn 16 MB cho mỗi tài liệu trong MongoDB, vì vậy nếu dữ liệu nhị phân cộng với các trường khác có tổng kích thước nhỏ hơn 16 MB, thì dữ liệu nhị phân có thể được nhúng trong tài liệu bằng kiểu dữ liệu Nhị phân

Đây là một ví dụ

{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}
4

BinData đây là đại diện base64 của nội dung nhị phân

  • Chưa xác định - Loại dữ liệu này được sử dụng để lưu trữ giá trị chưa xác định trong một trường. Lưu ý rằng MongoDB phân biệt giữa null và không xác định nhưng trình bao chuyển cả hai thành null. Tuy nhiên, hành vi này có thể được thay đổi
{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}
5

Không xác định hiện không được dùng nữa trong MongoDB 4. 4

  • 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 hoặc RegEx trong một trường. Chúng có thể được sử dụng để khớp mẫu trên các ngôn ngữ khác nhau. Đây là một ví dụ
{
"employee_name":  "John Doe",
"employee_skills":  "UI Design",
"employee_salary":  40000,
"employee_status":  true,
}
6
  • JavaScript với Phạm vi - Có thể lưu trữ một chức năng trực tiếp trong MongoDB trong một trường. Các chức năng với bao đóng cũng có thể được lưu trữ. Chúng sẽ liên kết với phạm vi của phiên MongoDB khi chúng được thực thi

Trong BSON, có hai loại khác nhau được định nghĩa cho các hàm không có bao đóng, JavaScript và một loại khác cho các hàm có bao đóng, JavaScript có Phạm vi. JavaScript với Phạm vi hiện không được dùng nữa trong MongoDB 4. 4

Vì vậy, đây là tất cả các kiểu dữ liệu quan trọng và nổi bật nhất trong MongoDB. BSON hỗ trợ nhiều kiểu dữ liệu hơn JSON. Một số kiểu dữ liệu cũ hơn và ít được sử dụng hơn sẽ bị xóa khỏi kệ hỗ trợ MongoDB và phạm vi hoặc hỗ trợ cho các kiểu mới hơn được cải thiện theo thời gian. Đây là một quá trình thường xanh

6 loại dữ liệu chính là gì?

Số nguyên (int) Đây là kiểu dữ liệu số phổ biến nhất được sử dụng để lưu trữ các số không có thành phần phân số (-707, 0, 707)
Dấu chấm động (float).
Nhân vật (char).
Chuỗi (str hoặc văn bản).
Boolean (bool).
Kiểu liệt kê (enum).
Mảng. .

3 loại kiểu dữ liệu là gì?

4 Loại dữ liệu. Danh nghĩa, thứ tự, rời rạc, liên tục .

Loại dữ liệu nào được lưu trữ trong MongoDB?

Dữ liệu được lưu trữ trong MongoDB ở định dạng tài liệu BSON . Ở đây, BSON là viết tắt của Biểu diễn nhị phân của tài liệu JSON. Hay nói cách khác, ở phần phụ trợ, máy chủ MongoDB chuyển đổi dữ liệu JSON thành dạng nhị phân được gọi là BSON và BSON này được lưu trữ và truy vấn hiệu quả hơn.

Làm cách nào để tìm loại dữ liệu trong MongoDB?

Như đã mô tả ở trên, toán tử $type hoạt động trên loại BSON trong MongoDB và nó cung cấp hai mã định danh cho mỗi loại BSON; . Chẳng hạn, để định vị kiểu dữ liệu Double, người ta có thể sử dụng giá trị số nguyên “1” và chuỗi “double” để định vị kiểu dữ liệu Double trong trường được chỉ định.