定義
$min
$min
の結果を制限するために、特定のインデックスの 包括的find()
下限を指定するには 値を指定します。$min
は、特定のインデックスのすべてのキーに対して の順序で下限値を指定します。db.collection.find( { <query> } ).min( { field1: <min value>, ... fieldN: <min valueN>} ) 次の 2 つの形式のいずれかで オプションを指定することもできます。
db.collection.find( { <query> } )._addSpecial( "$min", { field1: <min value1>, ... fieldN: <min valueN> } ) db.collection.find( { $query: { <query> }, $min: { field1: <min value1>, ... fieldN: <min valueN> } } )
動作
インデックス選択との相互作用
min()
にはフィールドのインデックスが必要で、クエリにこのインデックスを使用するように強制されるため、可能であればクエリに$gte
演算子を使用することをお勧めします。 次の例で考えてみましょう。
db.collection.find( { _id: { $in: [ 6, 7 ] } } ).min( { age: 25 } ).hint( { age: 1 } )
クエリは、 _id
のインデックスがより優れている場合でも、 age
フィールドのインデックスを使用します。
インデックスの限界
$max
によって指定される限界は、$min
によって指定される限界よりも大きくなければなりません。バージョン 4.0 で変更。
$min
次のない: $max
$min
演算子と$max
演算子は、システムが通常のクエリ計画を回避する必要があることを示します。 代わりに、インデックスの限界が$min
と$max
に指定された値によって明示的に指定されるインデックススキャンを構築します。
警告
2 つの境界のいずれかが指定されていない場合、クエリプランは一方では無制限のインデックススキャンになります。 これはどちらの演算子も含まないクエリ、または両方の演算子を使用してインデックス スキャンをより厳密に制限するクエリと比較して、パフォーマンスを低下させる可能性があります。
例
次の例ではmongosh
ラッパーを使用します。
包括的下限の指定
インデックス{ age: 1 }
collection
持つ という名前のコレクションに対する次の操作を検討します。
db.collection.find().min( { age: 20 } ).hint( { age: 1 } )
この操作は、フィールドage
が少なくとも20
であるドキュメントにクエリを制限し、 { age: 1 }
インデックスを20からMaxKey にスキャンするクエリプランを強制します。
以下と一緒に使用する $max
次の例のように、$min
$max
同じ インデックスの特定の範囲に結果を制限するには、 と を組み合わせて使用します。
注意
MongoDB 4.0以降、 $max
で指定された限界は$min
で指定された限界よりも大きくなければなりません。
db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )