MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

jak wstawić numer autoinkrementacji z moją kolekcją mangusty

Postępując zgodnie z samouczkiem MongoDB, Utwórz Auto- Zwiększanie pola sekwencji , musisz najpierw utworzyć oddzielne counters kolekcja do śledzenia ostatniej używanej sekwencji numerów. _id pole zawiera nazwę sekwencji tj. userID pole w kolekcji użytkownika i seq pole zawiera ostatnią wartość sekwencji.

Na początek wstaw do kolekcji liczników wartość początkową dla userID :

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

Po wypełnieniu kolekcji liczników wygeneruj jej schemat w Mongoose:

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

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

Następnie przedefiniuj schemat użytkownika, aby po zapisaniu modelu użytkownika najpierw wywołał funkcję findByIdAndUpdate() modelu licznika metoda niepodzielnej inkrementacji wartości seq i zwrócenia tej nowej wartości, która może być następnie użyta jako następny userID wartość:

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. Jak wstawić wiele elementów jednocześnie do kolekcji MongoDB

  2. MongoDB:klasa java.lang.Double nie może być rzutowana na klasę java.lang.Long

  3. Oplog włącz na samodzielnym mongod nie dla zestawu replik

  4. Wyszukiwanie pełnotekstowe w MongoDB GridFS?

  5. Jak przenieść element w tablicy MongoDB?