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 за обяснение.