MongoDB ha un $mul
operatore di aggiornamento del campo che consente di moltiplicare un valore per un importo specifico.
Se il campo non esiste già, viene creato e il suo valore viene impostato su zero (0
) utilizzando lo stesso tipo numerico del moltiplicatore.
Esempio
Supponiamo di avere una collezione con il seguente documento:
{ "_id" : 1, "bar" : 10 }
Possiamo usare il $mul
operatore insieme a update()
metodo per incrementare la bar
campo.
In questo modo:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
)
Uscita:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Questo ci dice che un documento è stato abbinato e modificato.
Controlliamo di nuovo la collezione:
db.foo.find()
Risultato:
{ "_id" : 1, "bar" : 20 }
Possiamo vedere che l'importo è raddoppiato a 20.
Moltiplica un campo che non esiste
Quando usi $mul
su un campo che non esiste nel documento, il campo viene aggiunto e impostato a zero (0
) utilizzando lo stesso tipo numerico del moltiplicatore.
Esempio:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
)
Uscita:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Si noti che abbiamo aggiornato due campi; la bar
campo e il extra
campo (che originariamente non esisteva).
Controlliamo di nuovo il documento:
db.foo.find()
Risultato:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
Possiamo vedere che la bar
il campo è stato moltiplicato per 3
e un nuovo extra
il campo è stato aggiunto e impostato su 0
.
Tipi misti
La moltiplicazione con valori di tipi numerici misti (intero a 32 bit, intero a 64 bit, float) può comportare la conversione del tipo numerico.
Consulta la documentazione di MongoDB per una spiegazione.