Để nhận số lượng tài liệu trong một bộ sưu tập, hãy sử dụng db.collection.find({}).count()
.
Tuy nhiên, những gì bạn đang cố gắng làm sẽ không hiệu quả. Khi bạn có nhiều quyền truy cập song song vào cơ sở dữ liệu, thì có thể nhiều luồng thực hiện điều này cùng một lúc, nhận cùng một số lượng và do đó sẽ chèn một tài liệu có cùng một id. Theo Định lý CAP , một cơ sở dữ liệu phân tán như MongoDB không thể cung cấp loại nhất quán này.
Thay vào đó, điều bạn nên làm là dựa vào MongoDB ObjectId
là số nhận dạng duy nhất cho tài liệu. MongoDB tự động tạo các giá trị này cho mỗi tài liệu khi bạn không cung cấp giá trị riêng cho _id
. ObjectId là duy nhất trên toàn cầu (đủ duy nhất cho bất kỳ mục đích thực tế nào), vì vậy bạn sẽ không nhận được bất kỳ va chạm nào. Chúng cũng bắt đầu bằng dấu thời gian, vì vậy khi bạn đặt hàng theo _id
bạn nhận được một thứ tự thời gian gần như đã nêu (như đã nêu trước đây, một nghiêm ngặt thứ tự thời gian không thể được cung cấp bởi một hệ thống phân tán).
Theo nguyên tắc chung, bất cứ khi nào bạn sử dụng AUTO_INCREMENT
trong SQL, bạn có thể sẽ sử dụng ObjectId trong MongodDB.