ObjectId của bất kỳ tài liệu nào bao gồm một số thập lục phân và có thể được sử dụng để xác định duy nhất bất kỳ tài liệu nào. Người ta quan sát thấy rằng các ObjectId do hệ thống xác định luôn là duy nhất. Tương tự, người dùng không thể gán một giá trị id cho nhiều tài liệu
Hướng dẫn này cung cấp hướng dẫn ngắn gọn để tìm hiểu các cách có thể nhận ObjectId sau khi chèn. Trước khi hiểu sâu hơn, hãy bắt đầu hướng dẫn này để hiểu việc gán ObjectId trong MongoDB
Sự khác biệt giữa id duy nhất do hệ thống xác định và do người dùng xác định là gì
Như đã thảo luận trước đó, tất cả các tài liệu trong MongoDB chứa các id duy nhất được phân loại thành hai loại lớn. tôi. e. , Người dùng Xác định và Hệ thống Xác định. Ở đây, chúng tôi đã chuẩn bị một phần giải thích cả hai phần
Id do hệ thống xác định. Nếu người dùng quên thêm trường “_id” trong quá trình chèn, hệ thống sẽ tự động gán một ObjectId cho tài liệu đó. Chẳng hạn, lệnh được đưa ra dưới đây chèn hai trường vào bộ sưu tập nhân viên. Cần lưu ý rằng chúng tôi đã không cung cấp bất kỳ id duy nhất nào trong quá trình chèn
> db. Nhân Viên. điền tên. "Alen", điểm số. 10}]
Hãy kiểm tra nội dung bên trong bộ sưu tập nhân viên bằng cách đưa ra lệnh được đề cập bên dưới
> db. Nhân Viên. tìm thấy[]. khá[]
Có thể quan sát thấy từ đầu ra rằng hệ thống đã gán một ObjectId, vì chúng tôi đã không cung cấp id khi chèn tài liệu
Id do người dùng xác định. Để hiểu rõ hơn về Id do người dùng xác định, chúng tôi đã thực hiện theo lệnh được đề cập bên dưới để chèn tài liệu vào bộ sưu tập nhân viên. Có thể quan sát thấy rằng lệnh chứa trường “Id”
> db. người lao động. chèn [{_id. 1, tên. "Sâm"}]
Xác minh việc chèn bằng cách ban hành lệnh sau
> db. người lao động. tìm thấy[]. khá[]
Và bạn sẽ nhận thấy từ đầu ra rằng trường “_id” chứa cùng một giá trị như nó đã được chèn trong lệnh trên
Cách lấy ObjectId sau khi chèn
Phần này chứa cách tốt nhất có thể để lấy “ObjectId” sau khi chèn vào MongoDB. Tên bộ sưu tập là “Tác giả” và sẽ được sử dụng ở đây để tham khảo các ví dụ
Phương pháp phổ biến để lấy ObjectId của tài liệu là sử dụng phương thức find. Lệnh được đề cập bên dưới sẽ truy xuất tất cả nội dung từ bộ sưu tập “Tác giả”. Người ta quan sát thấy rằng trường đầu tiên của mỗi tài liệu chứa Id của mỗi tài liệu xác định duy nhất tài liệu đó
> db. tác giả. tìm thấy[]. khá[]
Phần kết luận
Một trong những thuộc tính chính của bất kỳ Hệ thống quản lý cơ sở dữ liệu [DBMS] nào là xác định duy nhất dữ liệu được lưu trữ. Giống như các DBMS khác, MongoDB cũng gán một id duy nhất cho mỗi tài liệu bên trong một bộ sưu tập. Trong hướng dẫn này của loạt bài MongoDB, bạn đã học cách lấy ObjectId sau khi chèn nó vào MongoDB. Để kiểm tra ObjectId trong MongoDB, phương thức find[] thường được sử dụng. ObjectId trong MongoDB được gán bởi hệ thống và cũng dài. Do đó, không thể nhớ các id duy nhất dài cho hàng trăm tài liệu. Bằng cách làm theo hướng dẫn này, bạn sẽ có thể kiểm tra ObjectId của tất cả các tài liệu và sau đó bạn có thể truy cập các tài liệu bằng cách sử dụng Id duy nhất của chú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 –