文档菜单
文档首页
/
MongoDB 手册
/ / / /

$max

在本页

  • 定义
  • 行为
  • 示例
$max

$max运算符将字段的值更新为指定的值,前提是指定的值大于字段当前值。$max运算符可以比较不同类型的数据值,使用的是BSON比较顺序.

$max运算符表达式形式为

{ $max: { <field1>: <value1>, ... } }

要指定嵌入文档或数组中的<字段>,请使用点符号。

从MongoDB 5.0版本开始,更新运算符按照字母顺序处理基于字符串名称的文档字段。具有数字名称的字段按照数字顺序处理。有关详细信息,请参阅更新运算符行为

如果字段不存在,则$max运算符将字段设置为指定的值。

从MongoDB 5.0版本开始,当使用$max等更新运算符与空操作数表达式({})一起使用时,mongod不再引发错误。空更新不会产生变化,并且不会创建任何操作日志条目(这意味着操作是无效操作)。

创建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 }

创建 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")
}

提示

另请参阅

返回

$min