Omet navegació

3.3.3.4 - $inc

Com cabria esperar, el modificador $inc servirà per a incrementar un camp numèric. Si el camp existia, l'incrementarà en la quantitat indicada. Si no existia, crearà el camp amb un valor inicial de 0, i incrementarà el valor amb la quantitat indicada. La quantitat pot ser positiva, negativa o fins i tot amb part fraccionària. Sempre funcionarà bé, excepte quan el camp a incrementar no siga numèric, que donarà error.

La sintaxi és aquesta:

{ $inc : {camp : quantitat } }

En els següents exemples, incrementem un camp nou (per tant el crearà amb el valor especificat), i després l'incrementem en quantitats positives, negatives i fraccionàries, concretament l'inicialitzem amb un 2, i despés l'incrementem en 5, en -4 i en 2.25, per tant el resultat final serà 5.25:

> db.alumnes.update( {nom:"Abel"} , { $inc: {puntuacio:2} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.findOne()
{
    "_id" : ObjectId("56debe3017bf4ed437dc77c8"),
    "nom" : "Abel",
    "cognoms" : "Bernat Carrera",
    "edat" : 22,
    "nota" : [
        8.5,
        7.5,
        9
    ],
    "adreça" : {
        "carrer" : "Major",
        "numero" : 7,
        "cp" : "12502"
    },
    "puntuacio" : 2
}
> db.alumnes.update( {nom:"Abel"} , { $inc: {puntuacio:5} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.update( {nom:"Abel"} , { $inc: {puntuacio:-4} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.update( {nom:"Abel"} , { $inc: {puntuacio:2.25} } )
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.alumnes.findOne()
{
    "_id" : ObjectId("56debe3017bf4ed437dc77c8"),
    "nom" : "Abel",
    "cognoms" : "Bernat Carrera",
    "edat" : 22,
    "nota" : [
        8.5,
        7.5,
        9
    ],
    "adreça" : {
        "carrer" : "Major",
        "numero" : 7,
        "cp" : "12502"
    },
    "puntuacio" : 5.25
}