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