Không như những Hệ quản trị CSDL khác như MySQL, PostgreSQL,… MongoDB không có khái niệm Auto-Increment. Mỗi một bản ghi khi được thêm vào CSDL sẽ có 1 object ID với các ký tự ngẫu nhiên (Hoặc theo 1 quy tắc do MongoDB định nghĩa)

Bài viết này sẽ hướng dẫn cách tạo một trường tự động tăng (Auto-Increment Field) trong MongoDB
Sử dụng counters collection
Ý nghĩa của cách này là tạo 1 bảng để lưu lại giá trị tăng dần của ID.
Ví dụ: Tạo bảng users có trường _id là số tư nhiên tự tăng
Mở Mongo Shell để thực hiện các bước sau:
Bước 1: Tạo bảng counters bằng việc thêm 1 bản ghi có cấu trúc object như sau:
db.counters.insert(
{
_id: "userid",
seq: 0
}
)
Bước 2: Tạo hàm javascript để lấy ID tiếp theo (Cú paste function này vào Mongo Shell)
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
Bước 3: Xác nhận bằng việc thêm dữ liệu cho bảng users như sau
db.users.insert(
{
_id: getNextSequence("userid"),
name: "Nguyen Van A"
}
)
db.users.insert(
{
_id: getNextSequence("userid"),
name: "Nguyen Van B"
}
)
Kết quả:

Chú ý: Để tạo thêm trường Auto-Increment cho bảng khác ví dụ bảng products chẳng hạn. Chúng ta thêm 1 bản ghi vào bảng counters với trường _id: “productid”, rồi thêm dữ liệu cho bảng products giống như là:
db.products.insert(
{
_id: getNextSequence("productid"),
name: "Máy hàn"
}
)
Lưu ý: MongoDB khuyên chúng ta nếu không cần thiết thì không nên tạo auto-increment.
Generally in MongoDB, you would not use an auto-increment pattern for the _id field, or any field, because it does not scale for databases with large numbers of documents. Typically the default value ObjectId is more ideal for the _id.
Nguồn: vinasupport.com