Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

cursor.min()

Nesta página

  • Definição
  • Comportamentos
  • Exemplo
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âmetro
Tipo
Descrição
indexBounds
documento
O limite inferior inclusivo para as chaves de índice.

O parâmetro indexBounds tem a seguinte forma de protótipo:

{ field1: <min value>, field2: <min value2>, fieldN:<min valueN> }

Observação

Uso do índice

Para utilizar um índice com o método max() , você deve utilizar o método hint() para especificar o índice que deseja utilizar, exceto quando a query find() é uma condição de igualdade no campo _id .

Dica

Veja também:

min() existe principalmente para auxiliar no processo de mongos.

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( { $in: [ 6, 7 ] } ).min( { price: NumberDecimal("1.39") } ).hint( { price: 1 })

A query usará o índice no campo price, mesmo que o índice em _id possa ser melhor.

Se você usar min() com max() para especificar uma faixa:

  • os limites do índice especificados em min() e max() devem se referir às chaves do mesmo índice.

  • o limite especificado por max() deve ser maior que o limite especificado por min().

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.

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" : 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") }
])

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 do item igual a apple e type igual a jonagold, 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" : 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") }
  • 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 de price igual a 1.39 e max() limita a consulta aos documentos que estão abaixo o limite da chave do índice de price igual a 1.99:

    Observação

    O limite especificado por max() deve ser maior que o limite especificado por min().

    db.products.find().min( { price: NumberDecimal("1.39") } ).max( { price: NumberDecimal("1.99") } ).hint( { price: 1 } )

    A consulta retorna os seguintes documentos:

    { "_id" : 10, "item" : "orange", "type" : "navel", "price" : NumberDecimal("1.39") }

Voltar

cursor.maxTimeMS