Definición
$minEl
$minoperador actualiza el valor del campo a un valor especificado si este es menor que el valor actual del campo. El$minoperador permite comparar valores de diferentes tipos mediante el Orden de comparación BSON.{ $min: { <field1>: <value1>, ... } } Para especificar un
<field>en un documento incrustado o en un arreglo, utiliza notación de puntos.
Comportamiento
A partir de MongoDB 5.0, los operadores de actualización procesan los campos de documentos con nombres basados en cadenas en orden lexicográfico. Los campos con nombres numéricos se procesan en orden numérico. Consulta Comportamiento del operador de actualización para obtener más información.
Si el campo no existe, el operador establece el campo en el valor $min especificado.
Para las comparaciones entre valores de diferentes tipos, como un número y un valor nulo, utiliza el$min ordende comparación BSON.
A partir de MongoDB 5.0, mongod ya no genera un error cuando utiliza un operador de actualización como $min con una expresión de operando vacía ( { } ). Una actualización vacía no produce cambios y no genera ninguna entrada en el oplog (lo que significa que la operación es una “no-op").
Ejemplos
Utilice $min para comparar números
Crear la colección scores:
db.scores.insertOne( { _id: 1, highScore: 800, lowScore: 200 } )
El lowScore valor del documento actualmente 200 es. La siguiente operación usa para $min comparar 200 con el valor especificado 150 y actualiza el valor de lowScore a,150 ya que 150 es menor 200 que:
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 150 } } )
La colección scores ahora contiene el siguiente documento modificado:
{ _id: 1, highScore: 800, lowScore: 150 }
La siguiente operación no tiene efecto ya que el valor actual del campo lowScore, es decir 150, es menor que 250:
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 250 } } )
El documento permanece sin cambios en la colección scores:
{ _id: 1, highScore: 800, lowScore: 150 }
Utilice $min para comparar fechas
Crear la colección tags:
db.tags.insertOne( { _id: 1, desc: "crafts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") } )
La siguiente operación compara el valor actual del campo dateEntered, es decir ISODate("2013-10-01T05:00:00Z"), con la fecha especificada new Date("2013-09-25") para determinar si se debe actualizar el campo:
db.tags.updateOne( { _id: 1 }, { $min: { dateEntered: new Date("2013-09-25") } } )
La operación actualiza el campo dateEntered:
{ _id: 1, desc: "crafts", dateEntered: ISODate("2013-09-25T00:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") }