MongoDB tem um
$mul operador de atualização de campo que permite multiplicar um valor por um valor específico. Se o campo ainda não existir, ele será criado e seu valor será definido como zero (
0 ) usando o mesmo tipo numérico que o multiplicador. Exemplo
Suponha que temos uma coleção com o seguinte documento:
{ "_id" : 1, "bar" : 10 } Podemos usar o
$mul operador em conjunto com o update() método para incrementar a bar campo. Assim:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
) Saída:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Isso nos diz que um documento foi correspondido e modificado.
Vamos verificar a coleção novamente:
db.foo.find() Resultado:
{ "_id" : 1, "bar" : 20 } Podemos ver que o valor dobrou para 20.
Multiplicar um campo que não existe
Quando você usa
$mul em um campo que não existe no documento, o campo é adicionado e definido como zero (0 ) usando o mesmo tipo numérico que o multiplicador. Exemplo:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
) Saída:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) Observe que atualizamos dois campos; a
bar campo e o extra campo (que não existia originalmente). Vamos verificar o documento novamente:
db.foo.find() Resultado:
{ "_id" : 1, "bar" : 60, "extra" : 0 } Podemos ver que a
bar campo foi multiplicado por 3 , e um novo extra campo foi adicionado e definido como 0 . Tipos mistos
A multiplicação com valores de tipos numéricos mistos (inteiro de 32 bits, inteiro de 64 bits, flutuante) pode resultar na conversão do tipo numérico.
Consulte a documentação do MongoDB para obter uma explicação.