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

mongodb / node.jsの既存のコレクションに自動インクリメントを追加するにはどうすればよいですか?

    MongoDBには、自動インクリメント機能が組み込まれていません。

    挿入に使用された最後のシーケンス値を追跡するために、新しいコレクションを作成します:

    db.createCollection("counter")
    

    次のように1つのレコードのみを保持します:

    db.counter.insert({_id:"mySequence",seq_val:0})
    

    JavaScript関数を次のように作成します:

    function getNextSequenceVal(seq_id){
       // find record with id seq_id and update the seq_val by +1
       var sequenceDoc = db.counter.findAndModify({
          query:{_id: seq_id},
          update: {$inc:{seq_val:1}},
          new:true
       });
    
       return sequenceDoc.seq_val;
    }
    

    既存のコレクション内の既存のすべての値を更新するには、これが機能する必要があります(空の{}の場合、一部のドキュメントのみを更新する場合は条件を設定できます):

    db.myCollection.update({},
       {$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})
    

    これで、次のように既存のコレクションに新しいレコードを挿入できます。

    db.myCollection.insert({
       "_id":getNextSequenceVal("mySequence"),
       "name":"ABC"
    })
    


    1. マングースバージョン(4.11.0)でMongoDBに接続する

    2. MongoDB多次元配列プロジェクション

    3. MongoDBをAmazonVirtualPrivate Cloud(VPC)にデプロイする

    4. Meteor:予期しないmongo終了コード100