sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $mul

MongoDB tiene un $mul operador de actualización de campo que le permite multiplicar un valor por una cantidad específica.

Si el campo aún no existe, se crea y su valor se establece en cero (0 ) utilizando el mismo tipo numérico que el multiplicador.

Ejemplo

Supongamos que tenemos una colección con el siguiente documento:

{ "_id" : 1, "bar" : 10 } 

Podemos usar el $mul operador junto con update() método para incrementar la bar campo.

Así:

db.foo.update(
  { _id: 1 },
  { $mul: { bar: 2 } }
)

Salida:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Esto nos dice que un documento fue emparejado y modificado.

Revisemos la colección nuevamente:

db.foo.find()

Resultado:

{ "_id" : 1, "bar" : 20 } 

Podemos ver que la cantidad se ha duplicado a 20.

Multiplicar un campo que no existe

Cuando usas $mul en un campo que no existe en el documento, el campo se agrega y se establece en cero (0 ) utilizando el mismo tipo numérico que el multiplicador.

Ejemplo:

db.foo.update(
  { _id: 1 },
  { $mul: { bar: 3, extra: 2 } }
)

Salida:

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Observe que actualizamos dos campos; la bar campo y el extra campo (que originalmente no existía).

Revisemos el documento nuevamente:

db.foo.find()

Resultado:

{ "_id" : 1, "bar" : 60, "extra" : 0 } 

Podemos ver que la bar el campo ha sido multiplicado por 3 , y un nuevo extra el campo se agregó y se estableció en 0 .

Tipos mixtos

La multiplicación con valores de tipos numéricos mixtos (entero de 32 bits, entero de 64 bits, flotante) puede dar como resultado una conversión de tipo numérico.

Consulte la documentación de MongoDB para obtener una explicación.