Tăng / giảm một chuỗi chữ và số không có ý nghĩa gì; bạn cần tách giá trị chuỗi ban đầu thành các phần có ý nghĩa trước khi yêu cầu MongoDB (hoặc mã ứng dụng của bạn) điều chỉnh phần số.
Thông thường với liên kết cố định bạn cũng sẽ tăng giá trị thay vì giảm - toàn bộ mục đích của liên kết cố định là đảm bảo rằng một liên kết nhất định luôn trỏ đến cùng một tài nguyên.
Có vẻ như bạn thực sự muốn triển khai một mẫu trình tự, nơi bạn tìm thấy giá trị trình tự có sẵn tiếp theo để sử dụng.
Ví dụ:hãy xem: Tạo trình tự tự động tăng dần trong hướng dẫn sử dụng MongoDB.
Đây là phiên bản được sửa đổi một chút của getNextSequence()
trong tài liệu sử dụng upsert
để tìm một tài liệu bộ đếm sên hiện có hoặc chèn một tài liệu mới. Giá trị trả về là một slug mới duy nhất:
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
upsert: true,
new: true,
}
);
// Return the new slug (eg: "example_1")
return name + '_' + ret.seq;
}
> getNextSequence("example")
example_1
> getNextSequence("example")
example_2
> getNextSequence("example")
example_3
Nếu bạn muốn giảm giá trị bắt đầu nào đó, bạn có thể chèn giá trị bắt đầu cho trình tự của mình và thay vào đó giảm giá trị đó bằng $inc: { seq: -1 }
.