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.