sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo hacer correctamente una actualización/inserción masiva en MongoDB

Su sintaxis aquí es básicamente correcta, pero su ejecución general fue incorrecta y debería haber "separado" la acción "upsert" de las otras modificaciones. De lo contrario, estos "chocarán" y producirán un error cuando se produzca un "upsert":

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

Asegúrese de que su sails-mongo es una versión más reciente que admite correctamente las operaciones masivas gracias a la inclusión de un controlador nativo de nodo reciente. El más reciente es compatible con el controlador v2, lo cual está bien para esto.