Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$min

$min

注意

自 v3.2 起已弃用

从 v3.2 开始,$min mongosh中已弃用 操作符。在mongosh 中,请改用cursor.min()

指定$min值以指定特定索引的包含性下限,从而约束find()的结果。 $min按顺序指定特定索引的所有键的下限。

mongosh提供了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> }上。

由于min()需要字段上的索引,并强制查询使用此索引,因此如果可能,您可能更愿意使用$gte操作符进行查询。 考虑以下示例:

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

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

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

  • $min$max 中指定的索引边界必须同时指向同一索引的键。

  • $max指定的边界必须大于$min指定的边界。

    4.0 版本中的更改

$min$max操作符表示系统应避免正常的查询计划。 相反,它们会构造一次索引扫描,其中索引边界由$min$max中给出的值显式指定。

警告

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

以下示例使用mongosh包装器。

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

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

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

您可以将$min$max结合使用,将同一索引的结果限制在特定范围,如以下示例:

注意

从MongoDB 4.0开始, $max指定的边界必须大于$min指定的边界。

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

后退

$maxTimeMS

在此页面上