$min

在本页面

Definition

$min

Note

  • 从 v3.2 开始在mongo Shell 中弃用

  • 从 v3.2 开始,$min运算符在mongo shell 中已弃用。在mongoShell 中,改用cursor.min()

指定$min值以指定特定索引的下界,以约束find()的结果。 $min按 Sequences指定特定索引的所有*键的下限。

mongo shell 提供了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> } } )

Behavior

与索引选择的交互

因为min()需要在字段上构建索引,并强制查询使用该索引,所以如果可能的话,您可能更喜欢使用$gte运算符进行查询。考虑以下示例:

db.collection.find( { _id: 7 } ).min( { age: 25 } )

该查询将使用age字段上的索引,即使_id上的索引可能更好。

Index Bounds

如果您使用$max$min来指定范围,

在版本 3.6.6 中进行了更改。

$ min,没有$ max

minmax运算符指示系统应避免常规查询计划。相反,它们构造索引扫描,其中索引范围由minmax中给出的值明确指定。

Warning

如果未指定两个边界之一,则查询计划将是一侧无边界的索引扫描。与不包含任何运算符或使用两个运算符来更严格地约束索引扫描的查询相比,这可能会降低性能。

Examples

以下示例使用mongo Shell 包装程序。

指定下限值

考虑对名为collection且具有索引{ age: 1 }的集合进行以下操作:

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

此操作将查询限制为字段age至少为20的那些文档,并强制执行将{ age: 1 }索引从 20 扫描到MaxKey的查询计划。

Index Selection

您可以使用hint()显式指定相应的索引。否则,MongoDB 使用$max$min边界中的字段选择索引;但是,如果多个索引存在于具有不同排序 Sequences 的相同字段上,则索引的选择可能会模棱两可。

考虑一个名为collection的集合,该集合具有以下两个索引:

{ age: 1, type: -1 }
{ age: 1, type: 1 }

如果不显式使用hint(),则不清楚以下操作将选择哪个索引:

db.collection.find().min( { age: 20, type: 'C' } )

与$ max 一起使用

您可以结合使用$min$max将结果限制为* same *索引的特定范围,如以下示例所示:

Note

在版本 3.6.6 中更改:$max指定的界限必须大于$min指定的界限。

db.collection.find().min( { age: 20 } ).max( { age: 25 } )
首页