sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man korrekt gör en Bulk upsert/uppdatering i MongoDB

Din syntax här är i grunden korrekt, men din allmänna exekvering var fel och du borde ha "separerat" "upsert"-åtgärden från de andra modifieringarna. Dessa kommer annars att "krocka" och ge ett fel när en "upsert" inträffar:

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);
    });
});

Se till att din sails-mongo är en senaste version som stöder Bulk-operationerna på rätt sätt vara inkludering av en nyligen inbyggd noddrivrutin. Den senaste stöder v2-drivrutinen, vilket är bra för detta.



  1. MongoDB avbryter när mongod-kommandot körs på terminalen

  2. Python-databasprogrammering med MongoDB för nybörjare

  3. Mongodb grupp efter dbref fält

  4. Hur kan jag få antalet nycklar i redis?