cursor.min()
定義
cursor.min()
重要
mongosh メソッド
これは
mongosh
メソッドです。 これは、Node.js
またはその他のプログラミング言語固有のドライバー メソッドのドキュメントではありません。ほとんどの場合、
mongosh
メソッドはレガシーのmongo
shell メソッドと同じように動作します。 ただし、一部のレガシー メソッドはmongosh
では利用できません。レガシー
mongo
shell のドキュメントについては、対応する MongoDB Server リリースのドキュメントを参照してください。MongoDB API ドライバーについては、各言語のMongoDB ドライバードキュメント を参照してください。
の結果を制限するために、特定のインデックスの
find()
包括的 下限を指定します。min()
は、複合キー インデックスの下限を指定する方法を提供します。min()
メソッドには次のパラメーターがあります。Parameterタイプ説明indexBounds
ドキュメントインデックス キーの包括的下限。indexBounds
パラメータのプロトタイプ形式は次のとおりです。{ field1: <min value>, field2: <min value2>, fieldN:<min valueN> }
注意
インデックスの使用
min()
は主にmongos
プロセスをサポートするために存在し、クエリ修飾子$min
を囲む shell ラッパーです。
動作
インデックス選択との相互作用
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") }