MongoDB tự động tạo một id cho mọi đối tượng được chèn vào nó. Bạn không cần tạo id của riêng mình.
Nếu bạn cần một id số nguyên tăng dần thì bạn sẽ gặp phải tất cả các loại vấn đề đồng bộ hóa phân tán - nó thực sự khá khó để giải quyết đúng cho các trường hợp không tầm thường.
Để tạo một id duy nhất, cách đơn giản nhất tôi có thể nghĩ ra:
- đặt một chỉ mục trên cột id với một ràng buộc duy nhất.
- để chèn một truy vấn tài liệu vào chỉ mục cho số cao nhất, hãy thêm 1, sử dụng đó làm id.
- nếu chèn không thành công do thử lại chỉ mục trùng lặp
Nó liên quan đến một vài chuyến đi vòng quanh nhưng phải mạnh mẽ và với chỉ mục được thực hiện khá nhanh.
Nếu bạn chỉ có một vị trí viết những thông tin này, bạn có thể chuyển id trong AtomicInteger cục bộ và chỉ thực hiện toàn bộ quy trình khứ hồi nếu bạn phát hiện có va chạm, sau đó cập nhật AtomicInteger.