中级网站开发工程师 试题,网络公司网站 优帮云,沧州做网站的专业公司,出入库管理系统免费版学习mongodb#xff0c;体会mongodb的每一个使用细节#xff0c;欢迎阅读威赞的文章。这是威赞发布的第56篇mongodb技术文章#xff0c;欢迎浏览本专栏威赞发布的其他文章。
数据更新中#xff0c;往往要应对比较更新的场景。现在很多人喜欢跑步#xff0c;规律跑步…学习mongodb体会mongodb的每一个使用细节欢迎阅读威赞的文章。这是威赞发布的第56篇mongodb技术文章欢迎浏览本专栏威赞发布的其他文章。
数据更新中往往要应对比较更新的场景。现在很多人喜欢跑步规律跑步心脏功能增强会让静息心率就是深睡时的心率下降。而在参加强度训练时心率可能会突破历史最高心率达到新的高度。但这种训练很危险 需要专业的训练计划不要轻易尝试。在这样的场景中每次更新的时候需要与已有数值进行比较。当新数值比已有范围更大或更小时才会更新。
Mongodb提供了$min, $max方法 在一个原子事务中实现数据比较和更新。
定义
操作符$min,更新指定字段值。当新值小于当前字段值时更新数据。$min支持不同类型的数据比较。
操作符$max,更新指定字段值。当新值大于当前字段值时更新数据。$max支持不同类型的数据比较。
语法
{$min: {field1: value1, ...}}
{$max: {field1: value1, ...}}
当更新字段在嵌入式文档类型或数组时使用点操作符。
行为
从mongodb5.0开始更新操作的顺序按照文档字段名的字母表顺序执行。带有数字名称的字段按照数字顺序更新。
当字段不存在时$min, $max操作符插入新字段并将字段设置为指定字段。
Mongodb依据BSON比较顺序比较不同类型的数据大小。
mongodb 5.0版本以后向$max,$min传入空表达式({ })时mongodb不再抛出错误。空表达式不会修改字段值 也不会在oplog中添加新的操作记录。
应用
创建集合scores并插入数据
db.scores.insertOne({ _id: 1, highScore: 800, lowScore:200})
文档中字段lowScore值是200 下面的语句将字段值更新为150。因为150小于200所以更新成功。
db.scores.updateOne({_id: 1}, {$min: {lowScore: 150}})
下面的语句将字段lowScore的值更新为250因为250大于150所以数据不会更新
db.scores.updateOne({_id: 1}, {$min: {lowScore: 250}})
下面的语句将字段highScore更新为950因为950大于800所以数据更新成功
db.scores.updateOne({_id: 1}, {$max: {highScore: 950}})
下面的语句将字段highScore更新为870因为870小于950所以数据不会更新
db.scores.updateOne({_id: 1}, {$max: {highScore: 870}})
创建tags集合并插入数据
db.tags.insertOne({_id: 1,desc: crafts,dateEntered: ISODate(2013-10-01T05:00:00Z),dateExpired: ISODate(2013-10-01T16:38:16Z)
})
使用$min更新字段dateEntered。2013-09-25小于2013-10-01更新成功
db.tags.updateOne({_id: 1},{ $min: { dateEntered: new Date(2013-09-25)}}
)
使用$max更新字段dateExpired2013-09-30小于2013-10-01因此数据不会更新
db.tags.updateOne({_id: 1}, { $max: { dateExpired: new Date(2013-09-30)}}
)