On this page
cursor.min()
On this page
Definition
cursor.
min
( )-
Specifies the inclusive lower bound for a specific index in order to constrain the results of
find()
.min()
provides a way to specify lower bounds on compound key indexes.The
min()
method has the following parameter:Parameter Type Description indexBounds
document The inclusive lower bound for the index keys. The
indexBounds
parameter has the following prototype form:{ field1: <min value>, field2: <min value2>, fieldN:<min valueN> }
The fields correspond to all the keys of a particular index in order. You can explicitly specify the particular index with the
hint()
method. Otherwise, MongoDB selects the index using the fields in theindexBounds
; however, if multiple indexes exist on same fields with different sort orders, the selection of the index may be ambiguous.See also
min()
exists primarily to support themongos
process, and is a shell wrapper around the query modifier$min
.Note
-
Deprecated in the
mongo
Shell since v3.2 -
Starting in v3.2, the
$min
operator is deprecated in themongo
shell. In themongo
shell, usecursor.min()
instead.
-
Deprecated in the
Behaviors
Interaction with Index Selection
Because min()
requires an index on a field, and forces the query to use this index, you may prefer the $gte
operator for the query if possible. Consider the following example:
db.products.find( { _id: 7 } ).min( { price: 1.39 } )
The query will use the index on the price
field, even if the index on _id
may be better.
min()
without max()
The min
and max
operators indicate that the system should avoid normal query planning. Instead they construct an index scan where the index bounds are explicitly specified by the values given in min
and max
.
Warning
If one of the two boundaries is not specified, the query plan will be an index scan that is unbounded on one side. This may degrade performance compared to a query containing neither operator, or one that uses both operators to more tightly constrain the index scan.
Example
This example assumes a collection named products
that holds the following documents:
{ "_id" : 6, "item" : "apple", "type" : "cortland", "price" : 1.29 }
{ "_id" : 2, "item" : "apple", "type" : "fuji", "price" : 1.99 }
{ "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : 1.99 }
{ "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 }
{ "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 }
{ "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 }
{ "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 }
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 }
{ "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 }
{ "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }
The collection has the following indexes:
{ "_id" : 1 }
{ "item" : 1, "type" : 1 }
{ "item" : 1, "type" : -1 }
{ "price" : 1 }
Using the ordering of the
{ item: 1, type: 1 }
index,min()
limits the query to the documents that are at or above the index key bound ofitem
equal toapple
andtype
equal tojonagold
, as in the following:db.products.find().min( { item: 'apple', type: 'jonagold' } ).hint( { item: 1, type: 1 } )
The query returns the following documents:
{ "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : 1.29 } { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : 1.29 } { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : 1.29 } { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : 2.99 } { "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 } { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : 1.99 } { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : 0.99 }
If the query did not explicitly specify the index with the
hint()
method, it is ambiguous as to whethermongod
would select the{ item: 1, type: 1 }
index ordering or the{ item: 1, type: -1 }
index ordering.Using the ordering of the index
{ price: 1 }
,min()
limits the query to the documents that are at or above the index key bound ofprice
equal to1.39
andmax()
limits the query to the documents that are below the index key bound ofprice
equal to1.99
:Note
db.products.find().min( { price: 1.39 } ).max( { price: 1.99 } ).hint( { price: 1 } )
The query returns the following documents:
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : 1.39 }