Nó là duy nhất cho tất cả các mục đích thực tế. Tính không duy nhất được đề cập là một điều khá lý thuyết.
- dấu thời gian (giây kể từ kỷ nguyên)
- một số nhận dạng máy
- id quy trình
- và bộ đếm 3 byte bắt đầu bằng giá trị ngẫu nhiên mỗi giây
Vì vậy, ở mức trung bình, trừ khi bạn viết vượt quá 3080 tài liệu mỗi giây cho mỗi máy khách, bạn nên lưu. Điều cần lưu ý là _id
có một ràng buộc duy nhất:Ngay cả khi nếu bạn cố gắng viết cùng một ObjectId hai lần, sẽ có một ngoại lệ.
Lưu ý:ngay cả các thuật toán băm như MD5 hoặc (ở mức độ thấp hơn) SHA256 cũng có một chút cơ hội va chạm. Nhưng với một hạn chế duy nhất, bạn vẫn an toàn.
Chỉnh sửa :Vì một ngoại lệ được đưa ra trong trường hợp Rất, RẤT hiếm khi hai ObjectIds giống hệt nhau được tạo và cố gắng viết đồng thời, bạn chỉ cần xử lý chúng bằng cách tạo một ObjectId mới và cố gắng lưu lại tài liệu.