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

cursor.max()

項目一覧

  • 定義
  • 動作
cursor.max()

重要

mongosh メソッド

このページでは、 mongosh メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

の結果を制限するために、特定のインデックスの 排他的find() 上限を指定します。max()は、複合キー インデックスの上限を指定する方法を提供します。

max()メソッドには次のパラメーターがあります。

Parameter
タイプ
説明
indexBounds
ドキュメント
インデックス キーの排他的上限。

indexBoundsパラメータのプロトタイプ形式は次のとおりです。

{ field1: <max value>, field2: <max value2> ... fieldN:<max valueN> }

フィールドは、 の順序で特定のインデックスのすべてのキーに対応します。

注意

インデックスの使用

max()メソッドでインデックスを使用するには、 hint()メソッドを使用して使用するインデックスを指定する必要があります。ただし、 find()クエリが_idフィールドの等価条件である場合を除きます。

Tip

以下も参照してください。

max()は主にmongos (シャーディング)プロセスをサポートするために存在します。

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

db.products.find( { _id: { $in: [ 6, 7 ] } } ).max( { price: NumberDecimal("1.39") } ).hint( { price: 1 } )

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

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

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

警告

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

注意

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

以下の例では、次のドキュメントを含む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 }インデックスの順序を使用して、 max()はクエリを、 itemappleに等しく、かつtypejonagoldに等しいドキュメントに制限します。

    db.products.find().max( { item: 'apple', type: 'jonagold' } ).hint( { item: 1, type: 1 } )

    このクエリでは次のドキュメントが返されます。

    { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : NumberDecimal("1.29") }
    { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : NumberDecimal("1.99") }
    { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : NumberDecimal("1.99") }
  • { price: 1 }max()インデックス の順序付けを使用すると、price NumberDecimal("1.99")min()priceNumberDecimal("1.39")は に等しい のインデックスキーの限界未満のドキュメントにクエリを制限し、 は 以上のドキュメントにクエリを制限します のインデックスキーの限界が に等しい:

    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") }

戻る

cursor.map

項目一覧