_id có bắt buộc trong MongoDB không?

Trong MongoDB, trường _id làm khóa chính cho bộ sưu tập để mỗi tài liệu có thể được xác định duy nhất trong bộ sưu tập. Trường _id chứa một giá trị ObjectID duy nhất

Mặc định khi chèn tài liệu vào trong collection nếu bạn không thêm tên trường có _id vào tên trường thì MongoDB sẽ tự động thêm trường Object id như hình bên dưới

_id có bắt buộc trong MongoDB không?

Khi bạn truy vấn các tài liệu trong một bộ sưu tập, bạn có thể xem ObjectId cho từng tài liệu trong bộ sưu tập

Nếu bạn muốn đảm bảo rằng MongoDB không tạo Trường _id khi bộ sưu tập được tạo và nếu bạn muốn chỉ định id của chính mình làm _id của bộ sưu tập, thì bạn cần xác định rõ ràng điều này trong khi tạo bộ sưu tập

Khi tạo một trường id một cách rõ ràng, nó cần được tạo với _id trong tên của nó

Hãy xem một ví dụ về cách chúng ta có thể đạt được điều này

db.Employee.insert({_id:10, "EmployeeName" : "Smith"})

Giải thích mã

  1. Chúng tôi giả định rằng chúng tôi đang tạo tài liệu đầu tiên trong bộ sưu tập và do đó, trong câu lệnh trên khi tạo bộ sưu tập, chúng tôi xác định rõ ràng trường _id và xác định giá trị cho nó

Nếu lệnh được thực hiện thành công và bây giờ sử dụng lệnh find để hiển thị các tài liệu trong bộ sưu tập, Kết quả sau sẽ được hiển thị

đầu ra

_id có bắt buộc trong MongoDB không?

Kết quả hiển thị rõ ràng rằng trường _id mà chúng tôi đã xác định khi tạo bộ sưu tập hiện được sử dụng làm khóa chính cho bộ sưu tập

Hôm nay trong bài viết này, chúng ta sẽ xem một số hướng dẫn hữu ích khi xác định lược đồ cho MongoDB bằng _id Field

Hôm nay chúng tôi sẽ đề cập đến các khía cạnh dưới đây,

  • _id trong MongoDB là gì?
  • Cách '_id' được tạo trong MongoDB
  • Tôi có thể sử dụng _id của riêng mình được xác định không
  • Hướng dẫn và các phương pháp hay nhất cho trường ID MongoDB

_id trong MongoDB là gì?

Các trường _id trong MongoDB là một ObjectId. Nó là duy nhất, tạo nhanh và có độ dài 12 byte, bao gồm dấu thời gian + giá trị ngẫu nhiên + bộ đếm

ObjectId là cấu trúc cung cấp số nhận dạng duy nhất trên toàn cầu cho tài liệu của bạn

Cách '_id' được tạo trong MongoDB

Mỗi tài liệu được lưu trữ trong bộ sưu tập MongoDB yêu cầu một trường _id duy nhất cũng được dành riêng làm khóa chính xác định từng tài liệu duy nhất

_id có bắt buộc trong MongoDB không?

Để biết thêm chi tiết, vui lòng truy cập bài viết này,

  • Kiểu dữ liệu ObjectId MongoDB – Nguyên tắc

Khi một tài liệu mới được chèn vào và không chỉ định rõ ràng trường ‘_id’, thì trình điều khiển MongoDB sẽ tự động tạo _id dưới dạng ObjectId

_id có bắt buộc trong MongoDB không?

Hãy lấy một tài liệu lược đồ ví dụ được đẩy lên MongoDB,

Ví dụ

{
  "Name": "Design Patterns",
  "Price": 54.93,
  "Category": "Computers",
  "Author": "Ralph Johnson"
}

Tài liệu MongoDB được chèn như bên dưới,

{
"_id":"5db5a4476997188b2722c820",
"Name":"Design Patterns",
"Price":54.93,
"Category":"Computers",
"Author":"Ralph Johnson"
}

Với những điều trên, bạn sẽ có được giải pháp cho tính duy nhất ở cấp Cơ sở hạ tầng cơ sở dữ liệu. Không có nghĩa là bạn sẽ nhận được cùng một tài liệu có cùng “_id” trong bộ sưu tập đã cho. Điều này chỉ được chăm sóc bởi hệ thống MongoDB và hành vi mặc định của nó

Tôi có thể sử dụng _id của riêng mình được xác định không

Đây là một khả năng rất lớn trên thực tế tôi đã thấy nhiều dự án sử dụng _id của riêng họ

Ví dụ

Trong ví dụ dưới đây _id được mã máy khách xác định rõ ràng và được chèn vào cơ sở dữ liệu

Đây là một ví dụ khi sử dụng ‘_id’ được xác định tùy chỉnh

_id có bắt buộc trong MongoDB không?

Trước khi sử dụng tùy chọn này, có các hướng dẫn bên dưới có thể giúp bạn quyết định,

Hướng dẫn và các phương pháp hay nhất cho trường ID MongoDB

  • Theo mặc định, loại _id sẽ là ObjectID trừ khi được chỉ định rõ ràng trong quá trình tạo tài liệu
  • giá trị _id không cần phải là ObjectID. Người dùng có thể ghi đè _id thành loại dữ liệu khác với loại dữ liệu ObjectID nếu muốn. Ví dụ: bạn có thể xác định _id là Chuỗi hoặc Int nếu cần
  • Trường _id sẽ luôn là trường đầu tiên trong tài liệu
  • Nếu tài liệu đã nhận không có trường _id làm trường đầu tiên, thì máy chủ MongoDB sẽ chuyển nó thành hành vi mặc định đầu tiên
  • _id hỗ trợ các loại trong MongoDB – _id hỗ trợ hầu hết các loại BSON
  • _id vẫn là khóa chính cho các phần tử trong bộ sưu tập
  • _id được lập chỉ mục tự động
_id có bắt buộc trong MongoDB không?
  • Nếu xác định _id tùy chỉnh của riêng bạn thì hãy chắc chắn 100% rằng nó sẽ duy nhất. Bạn sẽ nhận được nhiều lỗi cho các bản sao, thậm chí với ít hơn 0. Xác suất 009% vì nhiều bản ghi âm lượng hơn có thể tạo ra nhiều lỗi như vậy hơn
  • Vui lòng đảm bảo không sử dụng id của bạn làm thông tin nhạy cảm do các biện pháp bảo mật tốt nhất
  • Bạn có thể sử dụng thông tin nhạy cảm như PII hoặc PHI dưới dạng _id nhưng vui lòng đảm bảo tính khả thi của các tùy chọn đó trước khi sử dụng chúng. Có thể trường hợp sử dụng của bạn hoạt động tốt hoặc sẽ không được xử lý chính xác

Thông tin PII hoặc PHI của bạn có thể bao gồm tên, địa chỉ, SSN, TIN thuế hoặc số hoặc mã nhận dạng khác, số điện thoại, địa chỉ email, số hồ sơ y tế. vân vân. )

Chúng tôi có thể xóa _id trong MongoDB không?

MongoDB tạo một chỉ mục duy nhất trên trường _id trong quá trình tạo bộ sưu tập. Chỉ mục _id ngăn khách hàng chèn hai tài liệu có cùng giá trị cho trường _id. Bạn không thể bỏ chỉ mục này vào trường _id .

Tại sao MongoDB sử dụng _id?

Trong MongoDB, trường _id làm khóa chính cho bộ sưu tập để mỗi tài liệu có thể được xác định duy nhất trong bộ sưu tập . Trường _id chứa một giá trị ObjectID duy nhất. Khi bạn truy vấn các tài liệu trong một bộ sưu tập, bạn có thể xem ObjectId cho từng tài liệu trong bộ sưu tập.

Chúng tôi có thể thay đổi _id trong MongoDB không?

Nếu vậy, câu trả lời là có, bạn có thể đặt thuộc tính _id thành một giá trị thuộc bất kỳ loại nào ngoại trừ mảng , theo https. // tài liệu. mongodb. com/thủ công/lõi/tài liệu/.

Sự khác biệt giữa ID và _id là gì?

Có thể hiểu sự khác biệt bằng cách làm theo, Trường _id là khóa chính cho mọi tài liệu. Nó được gọi là _id và cũng có thể truy cập thông qua id . Cố gắng sử dụng khóa id có thể dẫn đến lỗi định dạng ObjectId không hợp lệ.