MongoDB ma $mul operator aktualizacji pola, który pozwala pomnożyć wartość przez określoną kwotę.
Jeśli pole jeszcze nie istnieje, jest tworzone, a jego wartość jest ustawiona na zero (0 ) używając tego samego typu liczbowego co mnożnik.
Przykład
Załóżmy, że mamy kolekcję z następującym dokumentem:
{ "_id" : 1, "bar" : 10 }
Możemy użyć $mul operator w połączeniu z update() metoda zwiększania bar pole.
Tak:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
) Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) To mówi nam, że jeden dokument został dopasowany i zmodyfikowany.
Sprawdźmy jeszcze raz kolekcję:
db.foo.find() Wynik:
{ "_id" : 1, "bar" : 20 } Widzimy, że kwota podwoiła się do 20.
Pomnóż pole, które nie istnieje
Gdy używasz $mul na polu, które nie istnieje w dokumencie, pole jest dodawane i ustawiane na zero (0 ) używając tego samego typu liczbowego co mnożnik.
Przykład:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
) Wyjście:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Zauważ, że zaktualizowaliśmy dwa pola; bar pole i extra pole (które pierwotnie nie istniało).
Sprawdźmy ponownie dokument:
db.foo.find() Wynik:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
Widzimy, że bar pole zostało pomnożone przez 3 i nowy extra pole zostało dodane i ustawione na 0 .
Typy mieszane
Mnożenie z wartościami mieszanych typów liczbowych (32-bitowa liczba całkowita, 64-bitowa liczba całkowita, zmiennoprzecinkowa) może skutkować konwersją typu liczbowego.
Zobacz dokumentację MongoDB, aby uzyskać wyjaśnienie.