MongoDB har en $inc
fältuppdateringsoperator som låter dig öka ett värde med ett specifikt belopp.
Du kan använda positiva och negativa värden (dvs. för att öka eller minska värdet).
Om fältet inte redan finns skapas det med det angivna värdet.
Exempel
Anta att vi har en samling som heter dogs
med följande dokument:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Här, weight
fältet innehåller ett värde som kan ökas eller minskas.
Öka
Vi kan använda $inc
operatorn i kombination med update()
metod för att öka hundens vikt.
Så här:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Utdata:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Detta talar om för oss att ett dokument matchades och modifierades.
Låt oss kolla in samlingen igen:
db.dogs.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Vi kan se att hundens vikt har ökat med 5.
Minska
Du kan minska värdet genom att ange ett negativt värde till $inc
operatör.
Så här:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Utdata:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Kontrollera samlingen:
db.dogs.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Vi kan se att vikten nu har minskat med 5.
Öka ett fält som inte finns
När du ökar ett fält som inte finns i dokumentet läggs fältet till och tilldelas det angivna värdet.
Exempel:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Utdata:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Observera att vi uppdaterade två fält; weight
fältet och height
fält (som inte fanns från början).
Låt oss kontrollera dokumentet igen:
db.dogs.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Vi kan se att weight
fältet har ökats med 1
, och en ny height
fältet har lagts till med det angivna värdet 30
.