sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan laver du en masseupsert/opdatering korrekt i MongoDB

Din syntaks her er grundlæggende korrekt, men din generelle udførelse var forkert, og du burde have "adskilt" "upsert"-handlingen fra de andre modifikationer. Disse vil ellers "sammenstøde" og producere en fejl, når en "upsert" opstår:

LineupPointsRecord.native(function (err,collection) {

    var bulk = collection.initializeOrderedBulkOp();

    // Match and update only. Do not attempt upsert
    bulk.find({
        "teamId": lineUpPointsGeneralRecord.teamId,
        "round": 0
    }).updateOne({
        "$inc": { "lfPoints": roundPoints },
        "$push": { "roundPoints": roundPoints }
    });

    // Attempt upsert with $setOnInsert only
    bulk.find({
        "teamId": lineUpPointsGeneralRecord.teamId,
        "round": 0
    }).upsert().updateOne({
        "$setOnInsert": lineUpPointsGeneralRecord
    });

    bulk.execute(function (err,updateResult) {
        sails.log.debug(err,updateResult);
    });
});

Sørg for, at din sails-mongo er en seneste version, der understøtter Bulk-operationerne korrekt, være inkludering af en nylig indbygget node-driver. Den seneste understøtter v2-driveren, hvilket er fint til dette.



  1. Mongoose - få længden af ​​array i model

  2. Hvorfor er SQLite hurtigere end Redis i denne enkle benchmark?

  3. Hvad er distribueret atomlås i cache-drivere?

  4. Mongolab kunne ikke forbindes med MongodbShell