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. student
3
Đầ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