Gia tăng trong MongoDB

Nếu bạn đã quen làm việc với cơ sở dữ liệu SQL, thì có lẽ bạn đã có một số kinh nghiệm với trình tự tăng dần tự động. Chức năng này tự động tạo ra một giá trị duy nhất khi một hàng mới được thêm vào bảng. Mặc dù chức năng tự động tăng không được tích hợp trong MongoDB, nhưng có thể đạt được kết quả tương tự bằng một giải pháp thay thế đơn giản. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn các bước cần thiết để tạo trình tự tăng tự động trong MongoDB

Điều kiện tiên quyết

Trước khi tiếp tục với hướng dẫn này, hãy đảm bảo rằng MongoDB đã được cài đặt và định cấu hình trên hệ thống của bạn

Tổng quan về trình tự tăng tự động MongoDB

Không giống như cơ sở dữ liệu SQL, tính năng tăng tự động không được hỗ trợ trong MongoDB. MongoDB cung cấp ObjectId, có thể được sử dụng làm khóa chính – một giá trị làm cho mỗi tài liệu trở thành duy nhất trong một bộ sưu tập. Chức năng này hữu ích ở một mức độ nhất định, nhưng không đủ cho các hoạt động thời gian thực

Mặc dù MongoDB không hỗ trợ tính năng trình tự tăng tự động theo mặc định, nhưng thật dễ dàng để đạt được chức năng tương tự bằng cách sử dụng bộ đếm bộ sưu tập

Hãy cùng xem ví dụ sau, ví dụ này cho thấy giá trị của _id sẽ là kết quả của một chuỗi tăng tự động

{
"_id". 1,
"student_id". "02940409",
"khóa học". "Cử nhân Khoa học Kỹ thuật Máy tính",
"year_level". "thứ 2",
"bộ phận". "kỹ thuật"
}

Trong tài liệu hiển thị ở trên, chúng ta có thể thấy rằng giá trị của ObjectId sẽ là một chuỗi tăng dần tự động bắt đầu bằng giá trị '1'

Tạo trình tự tăng tự động MongoDB

Bây giờ chúng ta đã xem xét những điều cơ bản về cách tự động gia tăng hoạt động với MongoDB, hãy xem cách tạo trình tự gia tăng tự động của riêng chúng ta trong MongoDB

Tạo bộ sưu tập mẫu

Trong phần này, chúng ta sẽ tạo một bộ sưu tập mẫu có tên là student trong cơ sở dữ liệu có tên là schooldb

Để làm điều này, chúng tôi sẽ sử dụng cú pháp sau trong trình bao Mongo

> sử dụng schooldb
đã chuyển sang db schooldb
> db. createCollection("student")
{ "ok". 1 }

Trong mã được hiển thị ở trên, chúng tôi đã sử dụng lệnh trình bao Mongo use, chỉ định tên cơ sở dữ liệu của chúng tôi. Sau khi tạo cơ sở dữ liệu, chúng tôi đã tạo bộ sưu tập của mình bằng phương pháp db.createCollection()

Chèn tài liệu

Bây giờ chúng ta đã tạo cơ sở dữ liệu và bộ sưu tập của mình, hãy xem cách chèn tài liệu vào bộ sưu tập đó

db. sinh viên. chèn ( {_id. “itemId”, seqValue. 0 } );

Tạo một chức năng

Bước tiếp theo của chúng tôi sẽ là tạo một hàm sẽ tăng giá trị của biến seqValue trong bộ sưu tập student. Mã cho chức năng này được hiển thị bên dưới

function getSequenceNextValue(seqName) {
  var seqDoc = db. sinh viên. findAndModify({
    truy vấn. { _Tôi. seqName },
    cập nhật. { $inc. { seqValue. 1 } },
    mới. true
  });

  trả về seqDoc. seqValue;
}

Sử dụng Hàm JavaScript

Trong phần trước, chúng ta đã tạo một hàm JavaScript có tên là getSequenceNextValue. Bây giờ chúng tôi sẽ chỉ cho bạn cách sử dụng hàm đó trong trình bao Mongo để tăng giá trị của biến seqValue lên một

Đây là cách nó hoạt động

db. sinh viên. chèn({
  _id. getSequenceNextValue("itemId"),
  student_id. "02940409",
  khóa học. "Cử nhân khoa học kỹ thuật máy tính",
  year_level. "thứ 2",
  bộ phận. "kỹ thuật"
});

Sau khi chúng tôi thực hiện lệnh này, MongoDB sẽ thông báo cho chúng tôi bằng phản hồi sau. WriteResult({ "nInserted" : 1 })

Hãy thử chèn thêm một số tài liệu vào bộ sưu tập student

> db. sinh viên. chèn({
. "_Tôi". getSequenceNextValue("itemId"),
. "thẻ học sinh". "02740305",
. "khóa học". "Cử nhân Khoa học Tài chính",
. "cấp_năm". "thứ 2",
. "Phòng ban". "Quản trị kinh doanh"
. });
WriteResult({ "nInserted". 1 })
>db. sinh viên. chèn({
. "_Tôi". getSequenceNextValue("itemId"),
. "thẻ học sinh". "02550409",
. "khóa học". "Cử nhân Khoa học Kiến trúc",
. "cấp_năm". "thứ 2",
. "Phòng ban". "kỹ thuật"
. });
WriteResult({ "nInserted". 1 })

Xác minh bản ghi đã chèn

Trong phần trước, chúng tôi đã chèn tài liệu vào bộ sưu tập student. Bây giờ, hãy xác minh xem chúng tôi đã tự động tăng thành công _id của mình hay chưa

Chúng tôi sẽ sử dụng lệnh sau. student3

Đầu ra sẽ trông giống như thế này

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

{ "_id". "itemId", "seqValue". 3 }
{
"_id". 1,
"student_id". "02940409",
"khóa học". "Cử nhân Khoa học Kỹ thuật Máy tính",
"year_level". "thứ 2",
"bộ phận". "kỹ thuật"
}
{
"_id". 2,
"student_id". "02740305",
"khóa học". "Cử nhân Khoa học Tài chính",
"year_level". "thứ 2",
"phòng ban". "Quản trị kinh doanh"
}
{
"_id". 3,
"student_id". "02550409",
"khóa học". "Cử nhân Khoa học Kiến trúc",
"year_level". "thứ 2",
"phòng ban". "kỹ thuật"
}

Sự kết luận

Nếu bạn đang tìm cách tự động tăng giá trị cho một trường cụ thể, bạn sẽ thấy rằng chức năng này không được tích hợp trong MongoDB. Tuy nhiên, vẫn dễ dàng đạt được kết quả tương tự bằng cách sử dụng bộ sưu tập bộ đếm. Trong bài viết này, chúng tôi đã cung cấp hướng dẫn từng bước để tạo trình tự tăng tự động trong MongoDB. Với các ví dụ hướng dẫn của chúng tôi, bạn sẽ có thể triển khai chức năng tương tự trong bộ sưu tập MongoDB của riêng mình

Làm cách nào để tăng dữ liệu trong MongoDB?

Trong MongoDB, toán tử $inc được sử dụng để tăng giá trị của một trường theo một lượng xác định. Toán tử $inc thêm dưới dạng một trường mới khi trường đã chỉ định không tồn tại và đặt trường thành số tiền đã chỉ định. $inc chấp nhận giá trị dương và âm dưới dạng số tiền gia tăng.

Làm cách nào để sử dụng tăng tự động trong MongoDB?

Để triển khai trình kích hoạt để tăng tự động, đăng nhập vào tài khoản MongoDB Atlas của bạn, mở cụm mà bạn muốn làm việc trên đó. và nhấp vào Kích hoạt. Nhấp vào Thêm trình kích hoạt và đặt các giá trị sau vào các trường tương ứng .

MongoDB ObjectId có tăng dần không?

MongoDB không có chức năng tăng tự động vượt trội , giống như cơ sở dữ liệu SQL. Theo mặc định, nó sử dụng ObjectId 12 byte cho trường _id làm khóa chính để nhận dạng duy nhất các tài liệu.

Làm cách nào để cập nhật giá trị số trong MongoDB?

Trình vỏ MongoDB cung cấp các phương thức sau để cập nhật tài liệu trong bộ sưu tập. .
Để cập nhật một tài liệu, hãy sử dụng db. thu thập. cập nhậtOne()
Để cập nhật nhiều tài liệu, hãy sử dụng db. thu thập. cập nhậtMany()
Để thay thế một tài liệu, hãy sử dụng db. thu thập. thay thếOne()