cursor.min()
On this page本页内容
Definition定义
cursor.min()
- Important
mongosh Method
This page documents a
mongosh
method. This is not the documentation for a language-specific driver, such as Node.js.For MongoDB API drivers, refer to the language-specific MongoDB driver documentation.
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.find()
的结果。min()
提供了一种指定复合键索引下限的方法。Themin()
method has the following parameter:min()
方法具有以下参数:Parameter参数Type类型Description描述indexBounds
document The inclusive lower bound for the index keys.索引键的包含下界。TheindexBounds
parameter has the following prototype form:indexBounds
参数具有以下原型形式:{ field1: <min value>, field2: <min value2>, fieldN:<min valueN> }
See also: 另请参阅:
min()
exists primarily to support the 存在主要是为了支持mongos
process.mongos
进程。
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:min()
需要字段上的索引,并强制查询使用此索引,所以如果可能的话,您可能更喜欢$gte
运算符作为查询。考虑以下示例:
db.products.find( { $in: [ 6, 7 ] } ).min( { price: NumberDecimal("1.39") } ).hint( { price: 1 })
The query will use the index on the 查询将使用price
field, even if the index on _id
may be better.price
字段上的索引,即使_id
上的索引可能更好。
Index Bounds索引边界
If you use 如果使用min()
with max()
to specify a range:min()
和max()
来指定范围:
min()
without 而不用max()
The min()
and max()
methods indicate that the system should avoid normal query planning. min()
和max()
方法表示系统应该避免正常的查询计划。They construct an index scan where the index bounds are explicitly specified by the values given in 它们构造了一个索引扫描,其中索引边界由min()
and max()
.min()
和max()
中给定的值显式指定。
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实例
Starting in MongoDB 4.2, you must explicitly specify the particular index with the 从MongoDB 4.2开始,您必须使用hint()
method to run min()
with the following exception: you do not need to hint if the find()
query is an equality condition on the _id
field { _id: <value> }
.hint()
方法显式指定特定索引才能运行min()
,但有以下例外:如果find()
查询是_id
字段{ _id: <value> }
上的相等条件,则无需提示。
For the examples below, create a sample collection named 对于以下示例,请创建一个名为products
that holds the following documents:products
的示例集合,其中包含以下文档:
db.products.insertMany([
{ "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : NumberDecimal("1.99") },
{ "_id" : 2, "item" : "apple", "type" : "fuji", "price" : NumberDecimal("1.99") },
{ "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : NumberDecimal("1.29") },
{ "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : NumberDecimal("1.29") },
{ "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : NumberDecimal("1.29") },
{ "_id" : 6, "item" : "apple", "type" : "cortland", "price" : NumberDecimal("1.29") },
{ "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : NumberDecimal("2.99") },
{ "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : NumberDecimal("1.99") },
{ "_id" : 8, "item" : "orange", "type" : "valencia", "price" : NumberDecimal("0.99") },
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }
])
Create the following indexes for the collection:为集合创建以下索引:
db.products.createIndexes( [
{ "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:{ item: 1, type: 1 }
索引的排序,min()
将查询限制为位于或高于item
等于apple
和type
等于jonagold
的索引键绑定的文档,如下所示: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" : NumberDecimal("1.29") }
{ "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : NumberDecimal("1.29") }
{ "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : NumberDecimal("1.29") }
{ "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : NumberDecimal("2.99") }
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }
{ "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : NumberDecimal("1.99") }
{ "_id" : 8, "item" : "orange", "type" : "valencia", "price" : NumberDecimal("0.99") }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
:{ price: 1 }
的排序,min()
将查询限制为处于或高于等于1.39
的price
的索引键边界的文档,max()
将查询限制为低于等于1.99
的price
:Notedb.products.find().min( { price: NumberDecimal("1.39") } ).max( { price: NumberDecimal("1.99") } ).hint( { price: 1 } )
The query returns the following documents:查询返回以下文档:{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }