$max
定义
行为
从MongoDB 5.0版本开始,更新运算符按照字母顺序处理基于字符串名称的文档字段。具有数字名称的字段按照数字顺序处理。有关详细信息,请参阅更新运算符行为。
如果字段不存在,则$max
运算符将字段设置为指定的值。
从MongoDB 5.0版本开始,当使用$max
等更新运算符与空操作数表达式({}
)一起使用时,mongod
不再引发错误。空更新不会产生变化,并且不会创建任何操作日志条目(这意味着操作是无效操作)。
示例
使用$max
比较数字
创建scores
集合
db.scores.insertOne( { _id: 1, highScore: 800, lowScore: 200 } )
当前文档的highScore
的值是800。以下操作
比较
highscore
(800)与指定的值(950)将
highScore
更新为950,因为950大于800
db.scores.updateOne( { _id: 1 }, { $max: { highScore: 950 } } )
scores
集合现在包含以下修改后的文档
{ _id: 1, highScore: 950, lowScore: 200 }
下一个操作没有效果,因为highScore
(950)的值大于870
db.scores.updateOne( { _id: 1 }, { $max: { highScore: 870 } } )
在scores
集合中,文档保持不变
{ _id: 1, highScore: 950, lowScore: 200 }
使用 $max
比较日期
创建 tags
集合
db.tags.insertOne( { _id: 1, desc: "crafts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16.163Z") } )
以下操作比较了当前 dateExpired
字段的值,ISODate("2013-10-01T16:38:16.163Z")
,与指定的日期 new Date("2013-09-30")
,以确定是否更新该字段
db.tags.updateOne( { _id: 1 }, { $max: { dateExpired: new Date("2013-09-30") } } )
new Date("2013-09-30")
不是最新的日期,所以操作不会更新 dateExpired
字段
{ _id: 1, desc: "decorative arts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16.163Z") }