$min
定義
$min
$min
は、指定された値がフィールドの現在の値 より小さい 場合 、フィールドの値を指定された値にアップデートします。$min
演算子は、 BSON 比較順序 を使用して、異なる型の値を比較できます。{ $min: { <field1>: <value1>, ... } } <field>
を埋め込みドキュメントまたは配列で指定するには、ドット表記を使用します。
動作
MongoDB 5.0 以降、更新演算子では名前が文字列ベースのドキュメントフィールドを辞書順に処理します。数値名のフィールドは、数値順に処理されます。詳細については、「更新演算子の動作」を参照してください。
フィールドが存在しない場合、 $min
演算子はフィールドを指定された値に設定します。
数値や null などの異なる型の値間の比較では、 $min
はBSON 比較順序を使用します。
MongoDB 5.0 以降、$min
などの更新演算子を空のオペランド式({ }
)と併用しても、mongod
でエラーが発生しなくなりました。空の更新を使用すると変更は一切されず、oplog エントリも作成されません(操作は実行されません)。
例
$min
を使用して数値を比較
scores
コレクションを次のように作成します。
db.scores.insertOne( { _id: 1, highScore: 800, lowScore: 200 } )
ドキュメントのlowScore
の値は現在200
です。 次の操作では、 $min
を使用して200
と指定された値150
を比較し、 150
が200
より小さいため、 lowScore
の値を150
に更新します。
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 150 } } )
scores
コレクションには、次の変更されたドキュメントが含まれています。
{ _id: 1, highScore: 800, lowScore: 150 }
次の操作は、フィールドlowScore
の現在の値、つまり150
が250
より小さいため効果がありません。
db.scores.updateOne( { _id: 1 }, { $min: { lowScore: 250 } } )
scores
コレクションではドキュメントは変更されていません。
{ _id: 1, highScore: 800, lowScore: 150 }
$min
を使用して日付を比較
tags
コレクションを次のように作成します。
db.tags.insertOne( { _id: 1, desc: "crafts", dateEntered: ISODate("2013-10-01T05:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") } )
次の操作では、 dateEntered
フィールドの現在の値、つまりISODate("2013-10-01T05:00:00Z")
と指定された日付new Date("2013-09-25")
とを比較して、フィールドを更新するかどうかを判断します。
db.tags.updateOne( { _id: 1 }, { $min: { dateEntered: new Date("2013-09-25") } } )
この操作によりdateEntered
フィールドが更新されます。
{ _id: 1, desc: "crafts", dateEntered: ISODate("2013-09-25T00:00:00Z"), dateExpired: ISODate("2013-10-01T16:38:16Z") }