MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

как да вмъкна автоинкрементен номер с моята колекция mongoose

Следвайки урока за 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 ISODate заявка с PHP

  2. Как да направите правилно тестване на база данни (TDD) на Rails 3 с помощта на MongoDB и Mongoid

  3. PyMongo срещу MongoEngine за Django

  4. Не може да се унищожи свойството `user` на 'undefined' или 'null'

  5. Yii Emongodocuments близо до заявки, игнориращи maxDistance