Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

$mul (operador de atualização)

$mul

Multiply the value of a field by a number. To specify a $mul expression, use the following prototype:

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

O campo a atualizar deve conter um valor numérico.

Para especificar um <field> em um documento incorporado ou em uma array, use a notação de ponto.

Starting in MongoDB 5.0, mongod no longer raises an error when you use an update operator like $mul with an empty operand expression ( { } ). An empty update results in no changes and no oplog entry is created (meaning that the operation is a no-op).

A partir do MongoDB 5.0, os operadores de atualização processam campos de documento com nomes baseados em cadeia de caracteres em ordem lexicográfica. Os campos com nomes numéricos são processados em ordem numérica. Consulte Atualizar Comportamento de Operadores para detalhes.

If the field does not exist in a document, $mul creates the field and sets the value to zero of the same numeric type as the multiplier.

$mul é uma operação atômica dentro de um único documento.

A multiplicação com valores de tipos numéricos mistos (inteiro de 32 bits, inteiro de 64 bits, Double, Decimal128) pode resultar na conversão do tipo numérico. Para multiplicação com valores de tipos numéricos mistos, as seguintes regras de conversão de tipo se aplicam:

Tipo de Dados
Inteiro de 32 bits
Inteiro de 64 bits
Double
Decimal128

Inteiro de 32 bits

Inteiro de 32 ou 64 bits

Inteiro de 64 bits

Double

Decimal128

Inteiro de 64 bits

Inteiro de 64 bits

Inteiro de 64 bits

Double

Decimal128

Double

Double

Double

Double

Decimal128

Decimal128

Decimal128

Decimal128

Decimal128

Decimal128

Observação

  • Se o produto de dois números inteiros de 32 bits exceder o valor máximo para um número inteiro de 32 bits, o resultado será um número inteiro de 64 bits.

  • Operações inteiras de qualquer tipo que excedam o valor máximo para um número inteiro de 64 bits produzem um erro.

Crie a coleção products:

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

In the following operation, db.collection.updateOne() updates the document. The $mul operator multiplies the price field by 1.25 and the quantity field by 2:

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

No documento atualizado:

  • price é o valor original, 10,99, multiplicado por 1,25

  • quantity é o valor original, 25, multiplicado por 2

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

Adicione o seguinte documento à coleção products:

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

In the following operation, db.collection.updateOne() attempts to apply the $mul operator to a field that is not in the document:

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

A operação db.collection.updateOne()

  • insere o campo price

  • define Decimal128("0")

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

O campo price tem o mesmo tipo, Decimal128, como o multiplicador.

Adicione o seguinte documento à coleção products:

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

In the following operation, db.collection.updateOne() uses the $mul operator to multiply the value in the price field Decimal128(10) by Int32(5):

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

A operação resulta no seguinte documento:

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

The value in the price field is of type Decimal128. See Multiplication Type Conversion Rules for details.

Avalie esta página