Bạn sẽ cần sử dụng lệnh findAndModify của MongoDB. Với nó, bạn có thể chọn và gia tăng một trường.
db.seq.findAndModify({
query: {"_id": "users"},
update: {$inc: {"seq":1}},
new: true
});
Điều này sẽ tăng bộ đếm cho users
bộ sưu tập, sau đó bạn có thể thêm vào tài liệu trước khi chèn. Vì nó là nguyên tử, bạn không phải lo lắng về các điều kiện chủng tộc dẫn đến các ID xung đột.
Nó không liền mạch như auto_increment
của MySQL cờ, nhưng bạn cũng thường có tùy chọn chỉ định nhà máy ID của riêng bạn trong trình điều khiển Mongo, vì vậy bạn có thể triển khai nhà máy sử dụng findAndModify để tăng và trả về ID một cách minh bạch, dẫn đến trải nghiệm giống MySQL hơn nhiều.
Nhược điểm của cách tiếp cận này là vì mỗi lần chèn đều phụ thuộc vào khóa ghi trên bộ sưu tập trình tự của bạn, nếu bạn đang ghi nhiều, bạn có thể bị tắc nghẽn khá nhanh. Nếu bạn chỉ muốn đảm bảo rằng các tài liệu trong bộ sưu tập được sắp xếp theo thứ tự chèn, thì hãy xem Bộ sưu tập có giới hạn.