MongoDB har en $inc
feltopdateringsoperatør, der giver dig mulighed for at øge en værdi med et bestemt beløb.
Du kan bruge positive og negative værdier (dvs. at øge eller formindske værdien).
Hvis feltet ikke allerede eksisterer, oprettes det med den angivne værdi.
Eksempel
Antag, at vi har en samling kaldet dogs
med følgende dokument:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Her er weight
feltet indeholder en værdi, der kan øges eller formindskes.
Forøg
Vi kan bruge $inc
operator i forbindelse med update()
metode til at øge denne hunds vægt.
Sådan:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 5 } }
)
Output:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Dette fortæller os, at ét dokument blev matchet og ændret.
Lad os tjekke samlingen igen:
db.dogs.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "weight" : 15 }
Vi kan se, at hundens vægt er steget med 5.
Reducering
Du kan formindske værdien ved at angive en negativ værdi til $inc
operatør.
Sådan:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: -5 } }
)
Output:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Tjek samlingen:
db.dogs.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "weight" : 10 }
Vi kan se, at vægten nu er blevet reduceret med 5.
Forøg et felt, der ikke eksisterer
Når du øger et felt, der ikke findes i dokumentet, tilføjes feltet og tildeles den angivne værdi.
Eksempel:
db.dogs.update(
{ _id: 1 },
{ $inc: { weight: 1, height: 30 } }
)
Output:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Bemærk, at vi har opdateret to felter; weight
felt og height
felt (som ikke oprindeligt eksisterede).
Lad os tjekke dokumentet igen:
db.dogs.find()
Resultat:
{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }
Vi kan se, at weight
feltet er blevet forøget med 1
, og en ny height
felt er blevet tilføjet med den angivne værdi på 30
.