$min
定义
$min
$min
如果 指定值 小于 字段的当前值,则 会将字段值更新为指定值。$min
操作符可以使用 BSON比较顺序来比较不同类型的值。{ $min: { <field1>: <value1>, ... } } 要在嵌入式文档或数组中指定
<field>
,请使用点符号。
行为
从 MongoDB 5.0 开始,更新操作符按字典顺序处理具有基于字符串的名称的文档字段。具有数字名称的字段按数字顺序处理。详情请参阅更新操作符行为。
如果该字段不存在,$min
操作符会将字段设置为指定值。
对于不同类型值(如数字和空值)之间的比较,$min
使用 BSON 比较顺序。
从 MongoDB 5.0 开始,使用带空操作数表达式 ({ }
) 的更新操作符(如 $min
)时,mongod
不会再引发错误。空更新不会导致任何变化,也不会创建 oplog 条目(意味着该操作为“无操作”)。
示例
使用$min
比较数字
创建 scores
集合:
db.scores.insertOne( { _id: 1, highScore: 800, lowScore: 200 } )
该文档的lowScore
当前值为200
。 以下操作使用$min
将200
与指定值150
进行比较,并将 的值更新为lowScore
150
150
200
,因为 小于 :
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 150 } } )
现在,scores
集合包含以下修改后的文件:
{ _id: 1, highScore: 800, lowScore: 150 }
由于字段 lowScore
的当前值 150
小于 250
,因此下一步操作无效:
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 250 } } )
文档在 scores
集合中保持不变:
{ _id: 1, highScore: 800, lowScore: 150 }
使用$min
比较日期
创建 tags
集合:
db.tags.insertOne( { _id: 1, desc: "crafts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") } )
以下操作将 dateEntered
字段的当前值(即 ISODate("2013-10-01T05:00:00Z")
)与指定日期 new Date("2013-09-25")
进行比较,以确定是否更新该字段:
db.tags.updateOne( { _id: 1 }, { $min: { dateEntered: new Date("2013-09-25") } } )
操作会更新 dateEntered
字段:
{ _id: 1, desc: "crafts", dateEntered: ISODate("2013-09-25T00:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") }