MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मेरे नेवला संग्रह के साथ ऑटोइनक्रिकमेंट नंबर कैसे डालें?

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();
    });
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - टाइमस्टैम्प के साथ दस्तावेज़ों से नवीनतम गैर-शून्य फ़ील्ड मान प्राप्त करें

  2. क्या mongoDB की खोज है और लेनदेन को संशोधित करें-सहेजें

  3. कमांड के माध्यम से मोंगोडब डेटा और लॉग फाइल लोकेशन कैसे खोजें?

  4. MongoDB (mongoengine) में कुंजी द्वारा एक सूची के अंदर एक शब्दकोश प्राप्त करना

  5. स्टोर एनम MongoDB