sql >> Database teknologi >  >> NoSQL >> MongoDB

hvordan man indsætter autoincrement nummer med min mongoose samling

Efter MongoDB-selvstudiet, Opret en auto- Inkrementerende sekvensfelt , skal du først oprette en separat counters samling for at spore den sidst anvendte nummersekvens. _id feltet indeholder sekvensnavnet, dvs. userID feltet i brugersamlingen og seq feltet indeholder den sidste værdi af sekvensen.

Til at starte med skal du indsætte startværdien for userID i tællersamlingen :

db.counter.insert(
   {
      "_id": "userID",
      "seq": 0
   }
)

Efter at have udfyldt tællersamlingen, generer dens skema i Mongoose:

var counterSchema = mongoose.Schema({
    "_id": { "type": String, "required": true },
    "seq": { "type": Number, "default": 0 }
});

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

Omdefiner derefter dit brugerskema, så det, når du gemmer en brugermodel, først kalder tællermodellens findByIdAndUpdate() metode til at atomisk øge seq-værdien og returnere denne nye værdi, som derefter kan bruges som den næste userID værdi:

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. Skal jeg rense brugerinput, før jeg indsætter i MongoDB (MongoDB+Node js combo)

  2. Hvilken database skal man vælge (Cassandra, MongoDB, ?) til lagring og forespørgsel på hændelses-/log-/metrikdata?

  3. Fejl ved indsættelse af et dokument i MongoDB via Node.js

  4. Kan ikke oprette forbindelse til MongoDB atlas-database