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

Multiplique o valor de um campo por um número. Para especificar uma expressão, use o seguinte $mul protótipo:

{ $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.

A partir do MongoDB,5.0 mongod não gera mais um erro quando você usa um operador de atualização como $mul com uma expressão de operando vazia ( { } ). Uma atualização vazia não resulta em nenhuma alteração e nenhuma entrada no oplog é criada (o que significa que a operação é um 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.

Se o campo não existir em um documento, criará o campo e definirá o valor como zero do mesmo tipo numérico do$mul multiplicador.

$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 }
)

Na seguinte operação, db.collection.updateOne()atualiza o documento. O operador$mulmultiplica o campo price por 1.25 e o campo quantity por 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" } )

Na operação a seguir, tentadb.collection.updateOne() $mul aplicar o operador a um campo que não está no documento:

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") } )

Na seguinte operação, db.collection.updateOne() utiliza o operador para multiplicar o valor $mul no price campo Decimal()12810 por Int():325

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

A operação resulta no seguinte documento:

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

O valor no price campo é do tipo Decimal.128 Consulte Regras de conversão de tipo de multiplicação para obter detalhes.

Avalie esta página