Tôi có nên sử dụng id mongodb không?

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 -

>newObjectId = ObjectId()

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

ObjectId("5349b4ddd2781d08c09890f3")

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

>myObjectId = ObjectId("5349b4ddd2781d08c09890f4")

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 -

>ObjectId("5349b4ddd2781d08c09890f4").getTimestamp()

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

ISODate("2014-04-12T21:49:17Z")

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 –

Trong loạt bài đào tạo Chi tiết về MongoDB này, hướng dẫn trước đây của chúng tôi đã giải thích cho chúng ta tất cả về cách sử dụng Update() và Delete() Document trong MongoDB

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về ObjectId và các phương thức của nó trong MongoDB

Về cơ bản, ObjectId được coi là khóa chính trong bất kỳ bộ sưu tập MongoDB nào

Tôi có nên sử dụng id mongodb không?

Nó được tạo tự động bất cứ khi nào chúng tôi tạo một tài liệu mới trong một bộ sưu tập mới. Nó dựa trên giá trị thập lục phân 12 byte như bạn có thể quan sát theo cú pháp sau

cú pháp

ObjectId()

Giá trị thập lục phân này được chia thành ba phân đoạn như sau

  • Phân đoạn đầu tiên của giá trị 4 byte biểu thị số giây kể từ kỷ nguyên UNIX
  • Phân đoạn thứ hai của giá trị ngẫu nhiên 5 byte
  • Đoạn thứ ba của bộ đếm 3 byte bắt đầu với một giá trị ngẫu nhiên

MongoDB cung cấp ba phương thức cho ObjectId như bên dưới

  • ID đối tượng. lấy Dấu thời gian()
  • ID đối tượng. toString()
  • ID đối tượng. giá trị của()

Bạn sẽ học được gì

  • Tạo ObjectId
  • Xác định ObjectId cụ thể theo hệ thập lục phân
  • Nhận chuỗi thập lục phân ObjectId
  • Phần kết luận
  • đề xuất đọc

Tạo ObjectId

Để tạo một objectID mới theo cách thủ công trong MongoDB, bạn có thể khai báo objectId như một phương thức. Nói một cách đơn giản, chúng ta có thể nói rằng ID đối tượng là một mã định danh duy nhất cho mỗi bản ghi. Trong hình ảnh bên dưới, bạn có thể quan sát thấy rằng chúng tôi đang khai báo một biến có phương thức ID đối tượng làm giá trị và nó sẽ trả về hệ thập lục phân duy nhất

Mã số

X = ObjectId()

Hình 1. Trong vỏ Mongo

Tôi có nên sử dụng id mongodb không?

Hình 2. Trong Robo 3T

Tôi có nên sử dụng id mongodb không?

Trong hình trên, bạn có thể quan sát thấy rằng chúng ta đang khai báo một phương thức objectID làm giá trị cho biến “x” nhiều lần. Mỗi lần nó sẽ trả về một giá trị thập lục phân duy nhất và khi chúng ta chỉ gọi “x”, nó sẽ trả về giá trị thập lục phân được lưu trữ cuối cùng

Từ thử nghiệm này, chúng ta biết rằng, mỗi khi chúng ta gọi ObjectID, nó sẽ dành một vị trí cụ thể trong bộ nhớ ảo cho một bản ghi

Xác định ObjectId cụ thể theo hệ thập lục phân

Nếu bạn muốn xác định giá trị thập lục phân duy nhất của riêng mình thì MongoDB sẽ cho phép bạn thực hiện hành động này. Trong ví dụ trên, nó chỉ khai báo ID đối tượng mà không có bất kỳ tham số nào dưới dạng phương thức

Trong trường hợp này, chúng tôi sẽ xác định ID đối tượng có giá trị thập lục phân làm tham số của phương thức

Như bạn có thể quan sát, trong hình ảnh sau đây, chúng tôi đang xác định giá trị của biến “y” dưới dạng ID đối tượng được xác định trước. Do đó, nó sẽ trả về cùng một ID đối tượng mà qua đó chúng ta biết rằng chúng ta có thể chỉ định một giá trị thập lục phân cụ thể cho một ID đối tượng riêng lẻ

Mã số

y = ObjectId(“5bf142459b72e12b2b1b2cd”)

Hình 3. Trong vỏ Mongo

Tôi có nên sử dụng id mongodb không?

hinh 4. Trong Robo 3T

Tôi có nên sử dụng id mongodb không?

Nhận chuỗi thập lục phân ObjectId

Khi bạn gọi ID đối tượng, nó sẽ không trả về cho bạn chuỗi, thay vào đó, nó sẽ trả về cho bạn toàn bộ phương thức có giá trị thập lục phân duy nhất

Để trích xuất hệ thập lục phân duy nhất dưới dạng một chuỗi từ objectID, bạn phải sử dụng “. str” là hậu tố. Trong hình ảnh sau đây, bạn có thể quan sát cách thức hoạt động của nó

Mã số

y = ObjectId(“5bf142459b72e12b2b1b2cd”). str

Hình 5. Trong vỏ Mongo

Tôi có nên sử dụng id mongodb không?

Hình 6. Trong Robo 3T

Tôi có nên sử dụng id mongodb không?

Phần kết luận

ID đối tượng được coi là khóa chính trong bộ sưu tập MongoDB và được tạo tự động. Chúng tôi có thể tạo ID đối tượng theo cách thủ công và chúng tôi cũng có thể xác định giá trị thập lục phân theo yêu cầu của chúng tôi

Chúng tôi cũng có thể trích xuất giá trị thập lục phân dưới dạng một chuỗi từ ID đối tượng. ID đối tượng là sự kết hợp của thời gian, giá trị ngẫu nhiên và giá trị bộ đếm. Mỗi khi chúng ta gọi ID đối tượng, nó sẽ tạo ra một giá trị thập lục phân duy nhất

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

Trong MongoDB, mỗi tài liệu được lưu trữ trong một bộ sưu tập yêu cầu một trường _id duy nhất hoạt động như một khóa chính .

MongoDB IDS có thể dự đoán được không?

Mongo ObjectId được tạo theo cách có thể dự đoán được , giá trị ObjectId 12 byte bao gồm. giá trị 4 byte biểu thị số giây kể từ kỷ nguyên Unix, mã định danh máy 3 byte, id tiến trình 2 byte và.

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ệ.

MongoDB IDS có được đặt hàng không?

Chỉ chứa một giây độ phân giải theo thời gian, do đó, các giá trị ObjectId được tạo trong cùng một giây không có thứ tự đảm bảo và được tạo bởi . Lưu câu trả lời này.