Mengikuti tutorial MongoDB, Buat Auto- Menaikkan Bidang Urutan
, Anda harus terlebih dahulu membuat counters separate yang terpisah koleksi untuk melacak urutan nomor terakhir yang digunakan. _id bidang berisi nama urutan yaitu userID bidang di koleksi pengguna dan seq bidang berisi nilai terakhir dari urutan.
Untuk memulainya, masukkan ke dalam counter collection nilai awal untuk userID :
db.counter.insert(
{
"_id": "userID",
"seq": 0
}
)
Setelah mengisi koleksi penghitung, buat skemanya di Mongoose:
var counterSchema = mongoose.Schema({
"_id": { "type": String, "required": true },
"seq": { "type": Number, "default": 0 }
});
var counter = mongoose.model('counter', counterSchema);
Kemudian definisikan ulang skema pengguna Anda sehingga saat Anda menyimpan model pengguna, pertama kali memanggil findByIdAndUpdate() model penghitung metode untuk secara atom menambah nilai seq dan mengembalikan nilai baru ini yang kemudian dapat digunakan sebagai userID berikutnya nilai:
var userSchema = mongoose.Schema({
"userID": { "type": String, "required": true },
"firstname": { "type": String },
"lastname": { "type": String },
// other properties ...
}, { "collection": "user" }
);
userSchema.pre("save", function (next) {
var doc = this;
counter.findByIdAndUpdate(
{ "_id": "userID" },
{ "$inc": { "seq": 1 } }
, function(error, counter) {
if(error) return next(error);
doc.userID = counter.seq.toString();
next();
});
});