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

MongoDB $inc

MongoDB ha un $inc operatore di aggiornamento del campo che consente di incrementare un valore di un importo specifico.

Puoi utilizzare valori positivi e negativi (ad esempio per aumentare o diminuire il valore).

Se il campo non esiste già, viene creato con il valore specificato.

Esempio

Supponiamo di avere una collezione chiamata dogs con il seguente documento:

{ "_id" : 1, "name" : "Wag", "weight" : 10 }

Qui, il weight contiene un valore che può essere incrementato o decrementato.

Incremento

Possiamo usare il $inc operatore insieme a update() metodo per aumentare il peso di questo cane.

In questo modo:

db.dogs.update(
  { _id: 1 },
  { $inc: { weight: 5 } }
)

Uscita:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Questo ci dice che un documento è stato abbinato e modificato.

Controlliamo di nuovo la collezione:

db.dogs.find()

Risultato:

{ "_id" : 1, "name" : "Wag", "weight" : 15 }

Possiamo vedere che il peso del cane è aumentato di 5.

Decremento

Puoi decrementare il valore fornendo un valore negativo a $inc operatore.

In questo modo:

db.dogs.update(
  { _id: 1 },
  { $inc: { weight: -5 } }
)

Uscita:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Controlla la collezione:

db.dogs.find()

Risultato:

{ "_id" : 1, "name" : "Wag", "weight" : 10 }

Possiamo vedere che il peso è stato ora decrementato di 5.

Incrementa un campo che non esiste

Quando incrementi un campo che non esiste nel documento, il campo viene aggiunto e gli viene assegnato il valore specificato.

Esempio:

db.dogs.update(
  { _id: 1 },
  { $inc: { weight: 1, height: 30 } }
)

Uscita:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Si noti che abbiamo aggiornato due campi; il weight campo e l'height campo (che originariamente non esisteva).

Controlliamo di nuovo il documento:

db.dogs.find()

Risultato:

{ "_id" : 1, "name" : "Wag", "weight" : 11, "height" : 30 }

Possiamo vedere che il weight il campo è stato incrementato di 1 e una nuova height il campo è stato aggiunto con il valore specificato di 30 .