Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tự động tăng (Auto increment) ID trong MongoDB

MongoDB không có auto-increment mặc định như SQL. Cách phổ biến: dùng collection counter + findAndModify.

Các bước thực hiện

1. Tạo collection counter

> db.createSequenceDemo.insertOne({_id: "SID", GiaTri: 0});

2. Tạo hàm lấy sequence tiếp theo

> function nextSequence(tenSequence) {
  var doc = db.createSequenceDemo.findAndModify({
    query: {_id: tenSequence},
    update: {$inc: {GiaTri: 1}},
    new: true
  });
  return doc.GiaTri;
}

3. Sử dụng khi insert document

> db.checkSequenceDemo.insertOne({"MaSinhVien": nextSequence("SID"), "TenSinhVien": "Larry", "DiemToan": 78});
> db.checkSequenceDemo.insertOne({"MaSinhVien": nextSequence("SID"), "TenSinhVien": "Mike", "DiemToan": 89});
> db.checkSequenceDemo.insertOne({"MaSinhVien": nextSequence("SID"), "TenSinhVien": "Sam", "DiemToan": 67});

Kết quả:

{ "MaSinhVien": 1, "TenSinhVien": "Larry", "DiemToan": 78 }
{ "MaSinhVien": 2, "TenSinhVien": "Mike", "DiemToan": 89 }
{ "MaSinhVien": 3, "TenSinhVien": "Sam", "DiemToan": 67 }

Lưu ý: findAndModify atomic đảm bảo tính nhất quán. new: true trả về document sau cập nhật. Pattern này dùng cho _id tùy chỉnh hoặc trường business key.