MongoDB има $mul Оператор за актуализиране на полето, който ви позволява да умножите стойност по определена сума.
Ако полето все още не съществува, то се създава и стойността му се задава на нула (0 ) използвайки същия числов тип като множителя.
Пример
Да предположим, че имаме колекция със следния документ:
{ "_id" : 1, "bar" : 10 }
Можем да използваме $mul оператор във връзка с update() метод за увеличаване на bar поле.
Като това:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
) Изход:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Това ни казва, че един документ е бил съпоставен и променен.
Нека проверим колекцията отново:
db.foo.find() Резултат:
{ "_id" : 1, "bar" : 20 } Виждаме, че сумата се е удвоила до 20.
Умножете поле, което не съществува
Когато използвате $mul в поле, което не съществува в документа, полето се добавя и се задава на нула (0 ) използвайки същия числов тип като множителя.
Пример:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
) Изход:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Забележете, че актуализирахме две полета; bar полето и extra поле (което първоначално не е съществувало).
Нека проверим документа отново:
db.foo.find() Резултат:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
Можем да видим, че bar полето е умножено по 3 и нов extra полето е добавено и зададено на 0 .
Смесени типове
Умножаването със стойности на смесени числови типове (32-битово цяло число, 64-битово цяло число, float) може да доведе до преобразуване на числов тип.
Вижте документацията на MongoDB за обяснение.