参考 > 参考 > 经营者 > 查询修饰符 > $ min
在本页面
$min
从v3.2开始不推荐使用
从v3.2开始,shell中$min不推荐使用该运算符 mongo。在mongo外壳中,cursor.min()改用。
mongo
cursor.min()
指定一个$min值以指定特定索引的包含下限,以约束的结果 find()。所述$min指定的下限为所有的特定索引的键,以便。
find()
所述mongo外壳提供了min() 包装方法:
min()
db.collection.find( { <query> } ).min( { field1: <min value>, ... fieldN: <min valueN>} )
您还可以使用以下两种形式之一指定选项:
db.collection.find( { <query> } )._addSpecial( "$min", { field1: <min value1>, ... fieldN: <min valueN> } ) db.collection.find( { $query: { <query> }, $min: { field1: <min value1>, ... fieldN: <min valueN> } } )
索引用途
从MongoDB 4.2开始,必须使用hint()运行方法 min()/ 明确指定特定的索引,但$min以下情况除外:您不需要find()在_id字段上提示 查询是否为相等条件。{ _id: <value> }
hint()
_id
{ _id: <value> }
因为min()在字段上需要一个索引,并强制查询使用该索引,所以如果可能,您可能更喜欢$gte查询的 运算符。考虑以下示例:
$gte
db.collection.find( { _id: { $in: [ 6, 7 ] } } ).min( { age: 25 } ).hint( { age: 1 } )
该查询将使用age字段上的索引,即使索引_id可能更好。
age
如果使用$maxwith $min来指定范围,
$max
中指定的索引范围,$min并且$max 必须都引用同一索引的键。
指定的范围$max必须大于指定的范围$min。
在版本4.0中更改。
在min与max运营商表明,该系统应避免在正常的查询计划。相反,他们构建一个索引扫描,其中指标界限明确给出的数值规定 min和max。
min
max
警告
如果未指定两个边界之一,则查询计划将是一侧无边界的索引扫描。与不包含任何运算符或使用两个运算符来更严格地限制索引扫描的查询相比,这可能会降低性能。
以下示例使用mongo外壳程序包装器。
考虑对collection具有索引的名为的集合进行以下操作 :{ age: 1 }
collection
{ age: 1 }
db.collection.find().min( { age: 20 } ).hint( { age: 1 } )
此操作将查询限制age为至少包含该字段的那些文档,20并强制执行将索引从20 扫描到MaxKey的查询计划 。{ age: 1 }
20
您可以将$min与结合使用,$max以将结果限制为同一索引的特定范围,如以下示例所示:
注意
在版本4.0中更改:所指定的界限$max必须大于所指定的界限$min。
db.collection.find().min( { age: 20 } ).max( { age: 25 } ).hint( { age: 1 } )