Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / /

$max

在此页面上

  • 定义
  • 行为
  • 举例
$max

$max如果 指定值 大于 字段的当前值, 操作符会将字段值更新为指定值。$max 操作符可以使用 BSON 比较顺序来比较不同类型的值。

$max 操作符表达式的形式为:

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

要在嵌入式文档或数组中指定 <field>,请使用点符号。

从 MongoDB 5.0 开始,更新操作符按字典顺序处理具有基于字符串的名称的文档字段。具有数字名称的字段按数字顺序处理。详情请参阅更新操作符行为

如果该字段不存在,$max 操作符会将字段设置为指定值。

从 MongoDB 5.0 开始,使用带空操作数表达式 ({ }) 的更新操作符(如 $max)时,mongod 不会再引发错误。空更新不会导致任何变化,也不会创建 oplog 条目(意味着该操作为“无操作”)。

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

在此页面上