MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

como inserir o número de incremento automático com minha coleção de mangusto


Seguindo o tutorial do MongoDB, Crie um Auto- Incrementando o campo de sequência , você precisa primeiro criar um counters separado coleção para rastrear a última sequência numérica usada. O _id campo contém o nome da sequência, ou seja, o userID campo na coleção de usuários e o seq campo contém o último valor da sequência.

Para começar, insira na coleção de contadores o valor inicial do userID :
db.counter.insert(
   {
      "_id": "userID",
      "seq": 0
   }
)

Tendo preenchido a coleção de contadores, gere seu esquema no Mongoose:
var counterSchema = mongoose.Schema({
    "_id": { "type": String, "required": true },
    "seq": { "type": Number, "default": 0 }
});

var counter = mongoose.model('counter', counterSchema);

Em seguida, redefina seu esquema de usuário para que, quando você salvar um modelo de usuário, ele primeiro chame o findByIdAndUpdate() do modelo de contador para incrementar atomicamente o valor seq e retornar este novo valor que pode ser usado como o próximo userID valor:
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();
    });
});