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

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

注意

インデックスの使用

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

Tip

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

min()は主にmongosプロセスをサポートするために存在します。

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

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

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

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()は次のように、 itemappleに等しく、かつtypejonagoldに等しいインデックスキーの限界以上にあるドキュメントにクエリを制限します。以下は次のとおりです。

    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.39max()price1.99は のインデックスキーの限界が に等しいドキュメントにクエリを制限し、 はクエリを 未満のドキュメントに制限します。 のインデックスキーの限界が に等しい:

    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.maxTimeMS

項目一覧