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

$max

項目一覧

  • 定義
  • 動作
$max

注意

v 3.2 で廃止予定

v3.2 以降、$max 演算子はmongosh では非推奨です。mongoshでは、代わりにcursor.max() を使用してください。

Specify a $max value to specify the exclusive upper bound for a specific index in order to constrain the results of find(). $maxは、特定のインデックスのすべてのキーの上限を の順序で指定します。

mongoshmax()ラッパー メソッドを提供します。

db.collection.find( { <query> } ).max( { field1: <max value>, ... fieldN: <max valueN> } )

次の 2 つの形式のいずれかで$maxを指定することもできます。

db.collection.find( { <query> } )._addSpecial( "$max", { field1: <max value1>, ... fieldN: <max valueN> } )
db.collection.find( { $query: { <query> }, $max: { field1: <max value1>, ... fieldN: <max valueN> } } )

注意

インデックスの使用

MongoDB4.2 以降、hint() max()/$max を実行するには、 メソッドで特定のインデックスを明示的に指定する必要があります。ただし、次の例外があります。find() クエリが等価条件である場合は、ヒントは必要ありません_id フィールド{ _id: <value> } の 。

max()にはフィールドのインデックスが必要で、クエリにこのインデックスを使用するように強制されるため、可能であればクエリに$lt演算子を使用することをお勧めします。 次の例で考えてみましょう。

db.collection.find( { _id: { $in: [ 6, 7 ] } } ).max( { age: 25 } ).hint( { age: 1 } )

クエリは、 _idのインデックスがより優れている場合でも、 ageフィールドのインデックスを使用します。

$max$minを使用して範囲を指定する場合:

$min演算子と$max演算子は、システムが通常のクエリ計画を回避する必要があることを示します。 代わりに、インデックスの限界が$min$maxに指定された値によって明示的に指定されるインデックススキャンを構築します。

警告

2 つの境界のいずれかが指定されていない場合、クエリプランは一方では無制限のインデックススキャンになります。 これはどちらの演算子も含まないクエリ、または両方の演算子を使用してインデックス スキャンをより厳密に制限するクエリと比較して、パフォーマンスを低下させる可能性があります。

次の例ではmongoshラッパーを使用します。

インデックス{ age: 1 } collection持つ という名前のコレクションに対する次の操作を検討します。

db.collection.find( { <query> } ).max( { age: 100 } ).hint( { age: 1 } )

この操作は、フィールドage100より小さいドキュメントにクエリを制限し、 { age: 1 }インデックスをMinKeyから100にスキャンするクエリプランを強制します。

次の例のように、$max $min同じ インデックスの特定の範囲に結果を制限するには、 を単独で使用するか、 と組み合わせて使用します。

注意

db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )

戻る

$hint

項目一覧