$min

Definition

  • $min

Deprecated since v3.2

Starting in v3.2, the $min operator is deprecated in themongo shell. In the mongo shell,use cursor.min() instead.

Specify a $min value to specify the inclusive lowerbound for a specific index in order to constrain the results offind(). The $min specifies thelower bound for all keys of a specific index in order.

The mongo shell provides the min()wrapper method:

  1. db.collection.find( { <query> } ).min( { field1: <min value>, ... fieldN: <min valueN>} )

You can also specify the option with either of the two forms:

  1. db.collection.find( { <query> } )._addSpecial( "$min", { field1: <min value1>, ... fieldN: <min valueN> } )
  2. db.collection.find( { $query: { <query> }, $min: { field1: <min value1>, ... fieldN: <min valueN> } } )

Behavior

Interaction with Index Selection

Because min() requires an index on a field, andforces the query to use this index, you may prefer the$gte operator for the query if possible. Consider thefollowing example:

  1. db.collection.find( { _id: { $in: [ 6, 7 ] } } ).min( { age: 25 } ).hint( { age: 1 } )

The query will use the index on the age field, even if theindex on _id may be better.

Index Bounds

If you use $max with $min to specify a range,

  • the index bounds specified in $min and $maxmust both refer to the keys of the same index.

  • the bound specified by $max must be greater thanthe bound specified by $min.

Changed in version 4.0.

$min without $max

The min and max operators indicate that the systemshould avoid normal query planning. Instead they construct an index scan wherethe index bounds are explicitly specified by the values given inmin and max.

Warning

If one of the two boundaries is not specified, the query plan will bean index scan that is unbounded on one side. This may degrade performancecompared to a query containing neither operator, or one that uses bothoperators to more tightly constrain the index scan.

Examples

The following examples use the mongo shell wrappers.

Specify Inclusive Lower Bound

Consider the following operations on a collection namedcollection that has an index { age: 1 }:

  1. db.collection.find().min( { age: 20 } ).hint( { age: 1 } )

This operation limits the query to those documents where thefield age is at least 20 and forces a query plan which scans the{ age: 1 } index from 20 to MaxKey.

Use with $max

You can use $min in conjunction with $max tolimit results to a specific range for the same index, as in thefollowing example:

Note

Changed in version 4.0: The bound specified by $max must be greater than thebound specified by $min.

  1. db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )