Definição
cursor.min()Importante
Método mongosh
Esta página documenta um método
mongosh. Esta não é a documentação de um driver de idioma específico, como Node.js.Para drivers de API do MongoDB, consulte a documentação do driver do MongoDB específica da linguagem.
Especifica o limite inferior inclusivo para um índice específico a fim de restringir os resultados de
find().min()fornece uma maneira de especificar limites inferiores em índices de chave compostos.O método
min()tem o seguinte parâmetro:ParâmetroTipoDescriçãoindexBoundsdocumento
O limite inferior inclusivo para as chaves de índice.
O parâmetro
indexBoundstem a seguinte forma de protótipo:{ field1: <min value>, field2: <min value2>, fieldN:<min valueN> }
Observação
Uso do índice
Dica
min() existe principalmente para auxiliar no processo de mongos.
Compatibilidade
Esse método está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Comportamentos
Interação com a seleção de índices
Como min() requer um índice em um campo e força a query a usar esse índice, você pode preferir o operador $gte para a query, se possível. Considere o seguinte exemplo:
db.products.find( { _id: { $in: [ 6, 7 ] } } ).min( { price: Decimal128("1.39") } ).hint( { price: 1 } )
A query usará o índice no campo price, mesmo que o índice em _id possa ser melhor.
Limites do Índice
min() sem max()
Os métodos min() e max() indicam que o sistema deve evitar o planejamento normal de queries. Eles constroem uma varredura de índice em que os limites do índice são especificados explicitamente pelos valores informados em min() e max().
Aviso
Se um dos dois limites não for especificado, o plano de query será uma varredura de índice sem limites em um dos lados. Isso pode prejudicar o desempenho em comparação com uma query que não contém nenhum operador ou uma que usa ambos os operadores para restringir mais fortemente a verificação de índice.
Exemplo
A menos que a consulta find() seja uma condição de igualdade no campo _id { _id: <value> }, você deve especificar explicitamente o índice com o método hint() para executar min().
Para os exemplos abaixo, crie uma collection de amostra chamada products que contenha os seguintes documentos:
db.products.insertMany([ { "_id" : 1, "item" : "apple", "type" : "honey crisp", "price" : Decimal128("1.99") }, { "_id" : 2, "item" : "apple", "type" : "fuji", "price" : Decimal128("1.99") }, { "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : Decimal128("1.29") }, { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : Decimal128("1.29") }, { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : Decimal128("1.29") }, { "_id" : 6, "item" : "apple", "type" : "cortland", "price" : Decimal128("1.29") }, { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : Decimal128("2.99") }, { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : Decimal128("1.99") }, { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : Decimal128("0.99") }, { "_id" : 10, "item" : "orange", "type" : "navel", "price" : Decimal128("1.39") } ])
Crie os seguintes índices na coleção:
db.products.createIndexes( [ { "item" : 1, "type" : 1 }, { "item" : 1, "type" : -1 }, { "price" : 1 } ] )
Utilizar a ordenação do índice
{ item: 1, type: 1 },min()limita a query aos documentos que estão no mesmo nível ou acima do limite da chave do índice doitemigual aappleetypeigual ajonagold, conforme mostrado a seguir:db.products.find().min( { item: 'apple', type: 'jonagold' } ).hint( { item: 1, type: 1 } ) A consulta retorna os seguintes documentos:
{ "_id" : 3, "item" : "apple", "type" : "jonagold", "price" : Decimal128("1.29") } { "_id" : 4, "item" : "apple", "type" : "jonathan", "price" : Decimal128("1.29") } { "_id" : 5, "item" : "apple", "type" : "mcintosh", "price" : Decimal128("1.29") } { "_id" : 7, "item" : "orange", "type" : "cara cara", "price" : Decimal128("2.99") } { "_id" : 10, "item" : "orange", "type" : "navel", "price" : Decimal128("1.39") } { "_id" : 9, "item" : "orange", "type" : "satsuma", "price" : Decimal128("1.99") } { "_id" : 8, "item" : "orange", "type" : "valencia", "price" : Decimal128("0.99") } Usando a ordem do índice
{ price: 1 },min()limita a consulta aos documentos que estão iguais ou acima do limite da chave do índice depriceigual a1.39emax()limita a consulta aos documentos que estão abaixo o limite da chave do índice depriceigual a1.99:db.products.find().min( { price: Decimal128("1.39") } ).max( { price: Decimal128("1.99") } ).hint( { price: 1 } ) A consulta retorna os seguintes documentos:
{ "_id" : 10, "item" : "orange", "type" : "navel", "price" : Decimal128("1.39") }