sql >> Database >  >> NoSQL >> MongoDB

Hoe een Bulk upsert/update correct uit te voeren in MongoDB

Uw syntaxis hier is in principe correct, maar uw algemene uitvoering was verkeerd en u had de actie "upsert" moeten "scheiden" van de andere wijzigingen. Deze zullen anders "botsen" en een fout produceren wanneer een "upsert" optreedt:

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

Zorg ervoor dat uw sails-mongo is een nieuwste versie die de Bulk-bewerkingen ondersteunt, door een recent native stuurprogramma voor nodes op te nemen. De meest recente ondersteunt het v2-stuurprogramma, wat hiervoor prima is.



  1. kaart gebruiken om te cachen voor ongeveer 5000 vermeldingen in Javascript-toepassing VS Redis

  2. MongoDB:wat zijn de verschillen tussen documenten, records en attributen?

  3. Hoe kan ik de bestelling van MongoDB-berichten op tijd retourneren Favoriet door gebruiker?

  4. MongoDb serialiseert generieke typen (klassen)