sql >> データベース >  >> NoSQL >> MongoDB

MongooseはMongodbの`findAndModify`メソッドをサポートしていますか?

    この機能は十分に文書化されていません(読んでください:まったく)が、ソースコードを読んだ後、私は次の解決策を思いつきました。

    コレクションスキーマを作成します。

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

    モデルのコレクションのfindAndModifyメソッドを公開する静的メソッドをスキーマに作成します。

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

    モデルを作成します。

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

    検索して変更してください!

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

    ボーナス

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


    1. MongoDBがSQLDBよりもはるかに高速である理由の詳細で具体的な理由はありますか?

    2. MongoDBに自動インクリメントのプライマリIDをどのように実装しますか?

    3. Javaドライバーを使用してMongoDBに最後に挿入されたドキュメントIDを取得する

    4. シェルスクリプトを介してmongoコマンドを実行する方法は?