MongoDB ट्यूटोरियल के बाद, एक ऑटो बनाएं- इंक्रीमेंटिंग सीक्वेंस फील्ड
, आपको पहले एक अलग counters
बनाना होगा उपयोग किए गए अंतिम संख्या अनुक्रम को ट्रैक करने के लिए संग्रह। _id
फ़ील्ड में अनुक्रम नाम होता है यानी userID
उपयोगकर्ता संग्रह में फ़ील्ड और seq
फ़ील्ड में अनुक्रम का अंतिम मान होता है।
आरंभ करने के लिए, काउंटर संग्रह में userID
. के लिए प्रारंभिक मान डालें :
db.counter.insert(
{
"_id": "userID",
"seq": 0
}
)
काउंटरों के संग्रह को भरने के बाद, Mongoose में इसका स्कीमा तैयार करें:
var counterSchema = mongoose.Schema({
"_id": { "type": String, "required": true },
"seq": { "type": Number, "default": 0 }
});
var counter = mongoose.model('counter', counterSchema);
फिर अपने उपयोगकर्ता स्कीमा को फिर से परिभाषित करें ताकि जब आप किसी उपयोगकर्ता मॉडल को सहेजते हैं तो वह पहले काउंटर मॉडल के findByIdAndUpdate()
को कॉल करे seq मान को परमाणु रूप से बढ़ाने और इस नए मान को वापस करने की विधि जिसे बाद में अगले userID
के रूप में उपयोग किया जा सकता है मूल्य:
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();
});
});