Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Cursors

cursor.max()

cursor.max()

重要

mongosh メソッド

これはmongoshメソッドです。 これは、 Node.jsまたはその他のプログラミング言語固有のドライバー メソッドのドキュメントではありません

ほとんどの場合、 mongoshメソッドはレガシーの mongo shell メソッドと同じように動作します。 ただし、一部のレガシー メソッドはmongoshでは利用できません。

レガシーmongo shell のドキュメントについては、対応する MongoDB Server リリースのドキュメントを参照してください。

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を囲む shell ラッパーです。

注意

v 3.2 で廃止予定

v 3.2以降、 $max演算子はmongoshでは非推奨です。 mongoshでは、代わりにcursor.max()を使用してください。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

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

項目一覧