$min
定义
行为
从 MongoDB 5.0 开始,更新运算符按字典顺序处理具有基于字符串的名称的文档字段。具有数字名称的字段按数字顺序处理。有关详细信息,请参阅更新运算符行为。
如果字段不存在,$min
运算符将该字段设置为指定的值。
对于不同类型值之间的比较,例如数字和null,$min
使用BSON比较顺序。
从 MongoDB 5.0 开始,mongod
在使用类似于$min
的更新运算符并带有空操作数表达式({ }
)时不再引发错误。空更新不会引起更改,也不会创建任何操作日志条目(意味着该操作是no-op)。
示例
使用$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") }