Docs 菜单
Docs 主页
/
数据库手册
/ / / /

$mul

$mul

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

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

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

要在嵌入式文档或大量中指定<field> ,请使用点表示法。

从 MongoDB 5.0 开始,使用带空操作数表达式 ({ }) 的更新操作符(如 $mul)时,mongod 不会再引发错误。空更新不会导致任何变化,也不会创建 oplog 条目(意味着该操作为“无操作”)。

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

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

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

与混合数值类型(32 位整数、64 位整数、双精度浮点数、十进制128)的值相乘可能会导致数值类型转换。对于与混合数值类型的值相乘的乘法,以下类型转换规则应用:

数据类型
32 位整数
64 位整数
double
Decimal128

32 位整数

32 位或 64 位整数

64 位整数

double

Decimal128

64 位整数

64 位整数

64 位整数

double

Decimal128

double

double

double

double

Decimal128

Decimal128

Decimal128

Decimal128

Decimal128

Decimal128

注意

  • 如果两个 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" : Long(0) }

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

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

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

在以下运算中,db.collection.updateOne() 使用 $mul 操作符将 price 字段 Decimal128(10) 中的值与 Int32(5) 相乘:

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

该操作生成以下文档:

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

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

提示

后退

$max

在此页面上