Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wordpress-seo domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vinascript/html/wp-includes/functions.php on line 6114
Tạo Auto-Increment Field trong MongoDB - VinaScript

Latest Post

Triển khai dự án PHP, Mysql với Nginx trên Docker Tìm hiểu về HTML – Ưu điểm, nhược điểm và cách hoạt động của HTML

Trái ngược với một số Hệ quản trị CSDL khác như MySQL, PostgreSQL, MongoDB không hỗ trợ Auto-Increment. Trong MongoDB, mỗi khi bạn thêm một bản ghi vào cơ sở dữ liệu, nó sẽ được gán một Object ID riêng biệt với các ký tự ngẫu nhiên hoặc theo một quy tắc cụ thể 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ả: 

Lưu ý: Để tạo một trường tự tăng (Auto-Increment) cho một bảng khác, chẳng hạn như bảng “products”, chúng ta cần thêm một bản ghi vào bảng “counters” với trường _id: “productid”, sau đó thêm dữ liệu cho bảng “products” như sau:

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.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *