Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$mul

在此页面上

  • 定义
  • 行为
  • 举例
$mul

将字段的值乘以数字。要指定 $mul表达式,请使用以下原型:

{ $mul: { <field1>: <number1>, ... } }

要更新的字段必须包含数值。

要在嵌入式文档或数组中指定 <field>,请使用点符号。

从 MongoDB5 0mongod$mul{ }开始。当您将 等更新操作符与空操作数表达式 ( ) 一起使用时, 、 不再引发错误。空更新不会导致任何更改,也不会创建 oplog 条目(意味着该操作为“不操作”)。

从 MongoDB 5.0 开始,更新操作符按字典顺序处理具有基于字符串的名称的文档字段。具有数字名称的字段按数字顺序处理。详情请参阅更新操作符行为

如果文档中不存在该字段, $mul则会创建该字段并将值设置为零,其数字类型与乘数相同。

$mul 是单个文档中的原子操作。

与混合数值类型(32 位整数、64 位整数、浮点数)的值相乘可能会导致数值类型转换。对于与混合数值类型的值相乘的运算,以下类型转换规则适用:

32 位整数
64 位整数
浮点
32 位整数
32 位或 64 位整数
64 位整数
浮点
64 位整数
64 位整数
64 位整数
浮点
浮点
浮点
浮点
浮点

注意

  • 如果两个 32 位整数的乘积超过 32 位整数的最大值,则结果为 64 位整数。

  • 超过 64 位整数最大值的任何类型的整数运算都会产生错误。

创建 products 集合:

db.products.insertOne(
{ "_id" : 1, "item" : "Hats", "price" : Decimal128("10.99"), "quantity" : 25 }
)

在以下操作中, db.collection.updateOne()会更新文档。 $mul操作符将price字段乘以1.25 ,并将quantity字段乘以2

db.products.updateOne(
{ _id: 1 },
{ $mul:
{
price: Decimal128( "1.25" ),
quantity: 2
}
}
)

在更新的文档中:

  • price 是原始值 10.99,乘以 1.25

  • quantity 是原值 25 乘以 2

{ _id: 1, item: 'Hats', price: Decimal128("13.7375"), quantity: 50 }

将以下文档添加到 products 集合中:

db.products.insertOne( { _id: 2, item: "Unknown" } )

在以下操作中, db.collection.updateOne()尝试将$mul操作符应用于不在文档中的字段:

db.products.updateOne(
{ _id: 2 },
{ $mul: { price: Decimal128("100") } }
)

db.collection.updateOne() 操作

  • 插入 price 字段

  • 设置 Decimal128("0")

{ "_id" : 2, "item" : "Unknown", "price" : NumberLong(0) }

price 字段具有与乘数相同的类型,即 Decimal128。

将以下文档添加到 products 集合中:

db.products.insertOne( { _id: 3, item: "Scarf", price: Decimal128("10") } )

在以下操作中, db.collection.updateOne()使用$mul操作符将price字段Decimal 128 ( 10 )乘以Int 32 ( 5 ):

db.products.updateOne(
{ _id: 3 },
{ $mul: { price: Int32(5) } }
)

该操作生成以下文档:

{ _id: 3, item: 'Scarf', price: Decimal128("50") }

price字段中的值的类型为十进制128 。有关详细信息,请参阅乘法类型转换规则

提示

另请参阅:

← $max
$rename →

在此页面上