cursor.min()
定義
cursor.min()
重要
mongosh メソッド
このページでは、
mongosh
メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません。MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。
の結果を制限するために、特定のインデックスの 包括的
find()
下限を指定します。min()
は、複合キー インデックスの下限を指定する方法を提供します。min()
メソッドには次のパラメーターがあります。Parameterタイプ説明indexBounds
ドキュメントインデックス キーの包括的下限。indexBounds
パラメータのプロトタイプ形式は次のとおりです。{ field1: <min value>, field2: <min value2>, fieldN:<min valueN> }
注意
インデックスの使用
動作
インデックス選択との相互作用
min()
にはフィールドのインデックスが必要であり、クエリにこのインデックスを使用するように強制されるため、可能であればクエリに$gte
演算子を使用することをお勧めします。 次の例で考えてみましょう。
db.products.find( { $in: [ 6, 7 ] } ).min( { price: NumberDecimal("1.39") } ).hint( { price: 1 })
クエリは、 _id
のインデックスがより優れている場合でも、 price
フィールドのインデックスを使用します。
インデックスの限界
max()
によって指定される限界は、min()
によって指定される限界よりも大きくなければなりません。
min()
次のない: max()
min()
メソッドとmax()
メソッドは、システムが通常のクエリ計画を回避する必要があることを示しています。 インデックスの限界がmin()
とmax()
に指定された値によって明示的に指定されるインデックススキャンを構築します。
警告
2 つの境界のいずれかが指定されていない場合、クエリプランは一方では無制限のインデックススキャンになります。 これはどちらの演算子も含まないクエリ、または両方の演算子を使用してインデックス スキャンをより厳密に制限するクエリと比較して、パフォーマンスを低下させる可能性があります。
例
find()
クエリが_id
フィールド{ _id: <value> }
の等価条件でない限り、min()
を実行するにはhint()
メソッドでインデックスを明示的に指定する必要があります
以下の例では、次のドキュメントを含むproducts
という名前のサンプル コレクションを作成します。
db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : NumberDecimal("1.99") }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : NumberDecimal("1.99") }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : NumberDecimal("1.29") }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : NumberDecimal("1.29") }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : NumberDecimal("1.29") }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : NumberDecimal("1.29") }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : NumberDecimal("2.99") }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : NumberDecimal("1.99") }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : NumberDecimal("0.99") }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") } ])
コレクションに次のインデックスを作成します。
db.products.createIndexes( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ] )
{ item: 1, type: 1 }
インデックスの順序付けを使用して、min()
は次のように、item
がapple
に等しく、かつtype
がjonagold
に等しいインデックスキーの限界以上にあるドキュメントにクエリを制限します。以下は次のとおりです。db.products.find().min( { item: 'apple', type: 'jonagold' } ).hint( { item: 1, type: 1 } ) このクエリでは次のドキュメントが返されます。
{ "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : NumberDecimal("1.29") } { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : NumberDecimal("1.29") } { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : NumberDecimal("1.29") } { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : NumberDecimal("2.99") } { "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") } { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : NumberDecimal("1.99") } { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : NumberDecimal("0.99") } { price: 1 }
min()
インデックス の順序付けを使用すると、price
1.39
max()
price
1.99
は のインデックスキーの限界が に等しいドキュメントにクエリを制限し、 はクエリを 未満のドキュメントに制限します。 のインデックスキーの限界が に等しい:注意
max()
で指定される限界はmin()
で指定される限界よりも大きくなければなりません。db.products.find().min( { price: NumberDecimal("1.39") } ).max( { price: NumberDecimal("1.99") } ).hint( { price: 1 } ) このクエリでは次のドキュメントが返されます。
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }