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

異なる値でmongoDB内の多くのドキュメントを更新します

    この更新は、 <を使用して行うのが最適です。 code> BulkWrite API。上記の2つのドキュメントについて、次の例を検討してください。

    var bulkUpdateOps = [
        {
            "updateOne": {
                "filter": { "reference": 10 },
                "update": { "$push": { "history": history1 } }
            }
        },
        {
            "updateOne": {
                "filter": { "reference": 20 },
                "update": { "$push": { "history": history2 } }
            }
        }
    ];
    
    mongo.financeCollection.bulkWrite(bulkUpdateOps, 
        {"ordered": true, "w": 1}, function(err, result) {
            // do something with result
            callback(err); 
        }
    

    {"ordered":true、 "w":1} ドキュメントがサーバー上で提供された順序で順次更新されることを保証します。したがって、エラーが発生した場合、残りのすべての更新は中止されます。 {"w":1} オプションは、書き込みの懸念を決定します。1は、書き込み操作がスタンドアロンのmongodまたはレプリカセットのプライマリに伝播したことを確認する要求です。

    MongoDBの場合>=2.6 および<=3.0 Bulk OpeartionsAPI を使用します 次のように:

    var bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
    bulkUpdateOps
        .find({ "reference": 10 })
        .updateOne({
            "$push": { "history": history1 }
        });
    bulkUpdateOps
        .find({ "reference": 20 })
        .updateOne({
            "$push": { "history": history2 }
        });
    
    bulk.execute(function(err, result){
        bulkUpdateOps = mongo.financeCollection.initializeOrderedBulkOp();
        // do something with result
        callback(err);
    });
    



    1. mongodb3.4.3パーミッション拒否wiredtiger_kv_engine.cpp267ubuntu16でのエラー

    2. MongoDbPipelineAggregationの並べ替えサブサブドキュメント

    3. インスタンスメソッドでMongooseサブドキュメントを更新するにはどうすればよいですか?

    4. ドキュメントデータベース:冗長データ、参照など(特にMongoDB)