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
}
Llicenciat sota la Llicència Creative Commons Reconeixement SenseObraDerivada 4.0