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

MongoDBとNode.jsを使用して複数のオブジェクトをアップサートするにはどうすればよいですか?

    bullkWrite 更新を実行するためのAPI:

    var bulkUpdateOps = genres.map(function(doc) {
        return {
            "updateOne": {
                "filter": { "_id": doc.id },
                "update": { "$set": { "name": doc.name } },
                "upsert": true
            }
        };
    });
    
    db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
        // do something with result
    })
    

    より大きなアレイ、つまり1000を超える配列を処理している場合は、書き込みを500のバッチでサーバーに送信することを検討してください。これにより、サーバーにすべてのリクエストを送信するのではなく、500リクエストごとに1回だけ、パフォーマンスが向上します。

    >
    var bulkUpdateOps = [],
        counter = 0;
    
    genres.forEach(function(doc) {
        bulkUpdateOps.push({
            "updateOne": {
                "filter": { "_id": doc.id },
                "update": { "$set": { "name": doc.name } },
                "upsert": true
            }
        });
        counter++;
    
        if (counter % 500 == 0) {
            db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
                // do something with result
            });
            bulkUpdateOps = [];
        }
    })
    
    if (counter % 500 != 0) {
        db.collection('genres').bulkWrite(bulkUpdateOps, function(err, r) {
            // do something with the result
        });
    }
    


    1. Redis:リストまたはソートされたセットのニュースフィードをファンアウトしますか?

    2. Redis:あるキーを別のキーの値と等しく設定するにはどうすればよいですか?

    3. mongoDB関連の問題を効率的に解決するにはどうすればよいですか?

    4. MongoDB-JSON拡張モードでエクスポート