sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $inc

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 .


  1. Sådan bruger du ny URL fra mongodb 3.6 til at oprette forbindelse fra golang

  2. Redis-transaktioner

  3. Redis er tom efter opstart, selvom der er en .rdb-fil

  4. Sådan anvender du opdatering ved hjælp af filtreret positionsoperator med arrayFilters