Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / /

$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 を比較します

  • 950 が 800 より大きいため、 highScoreを 950 に更新します

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

Tip

以下も参照してください。

戻る

$min

項目一覧