Tạo Auto-Increment Field Trong MongoDB - VinaSupport

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

Từ khóa » Trường Object Id Là Gì