sql >> Databasteknik >  >> NoSQL >> MongoDB

Stöder Mongoose Mongodb `findAndModify`-metoden?

Funktionen är inte väl (läs:alls) dokumenterad, men efter att ha läst igenom källkoden kom jag på följande lösning.

Skapa ditt samlingsschema.

var Counters = new Schema({
  _id: String,
  next: Number     
});

Skapa en statisk metod på schemat som kommer att exponera findAndModify-metoden för modellens samling.

Counters.statics.findAndModify = function (query, sort, doc, options, callback) {
  return this.collection.findAndModify(query, sort, doc, options, callback);
};

Skapa din modell.

var Counter = mongoose.model('counters', Counters);

Hitta och ändra!

Counter.findAndModify({ _id: 'messagetransaction' }, [], { $inc: { next: 1 } }, {}, function (err, counter) {
  if (err) throw err;
  console.log('updated, counter is ' + counter.next);
});

Bonus

Counters.statics.increment = function (counter, callback) {
  return this.collection.findAndModify({ _id: counter }, [], { $inc: { next: 1 } }, callback);
};

Counter.increment('messagetransaction', callback);


  1. En översikt över WiredTiger Storage Engine för MongoDB

  2. Hur använder StackExchange.Redis flera slutpunkter och anslutningar?

  3. Mest effektiva sättet att få flera hash i Redis?

  4. Hantera anslutningar