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.