MongoDB Consulta Sort() e Limit() com ordem por exemplos

โšก Resumo Inteligente

MongoDB Os modificadores de consulta `sort()` e `limit()` controlam quantos documentos uma consulta retorna e em que ordem. O mรฉtodo `limit()` limita a quantidade de resultados, enquanto `sort()` organiza os documentos em ordem crescente ou decrescente, usando os valores 1 ou -1.

  • ๐Ÿ”ข Limitar resultados: O mรฉtodo limit() restringe quantos documentos uma consulta retorna, por exemplo limit(2) retorna dois registros.
  • โฌ‡๏ธ Ordenar em ordem decrescente: sort({field:-1}) retorna documentos em ordem decrescente do campo escolhido.
  • โฌ†๏ธ Ordenar em ordem crescente: sort({field:1}) retorna documentos em ordem crescente, que tambรฉm รฉ a direรงรฃo padrรฃo.
  • โญ๏ธ Ignorar paginaรงรฃo: O mรฉtodo skip() ignora um certo nรบmero de documentos e, combinado com limit(), cria a paginaรงรฃo.
  • ๐Ÿงท Mรบltiplas chaves: A funรงรฃo sort() aceita vรกrios campos, ordenando pela primeira chave e desempatando com a prรณxima.
  • ๐Ÿ–จ๏ธ Readable Saรญda: Encadeando forEach(printjson), imprime cada documento retornado em formato JSON limpo.

MongoDB Consultas Sort() e Limit()

O que sรฃo modificaรงรตes de consulta?

Mongo DB fornece modificadores de consulta, como as clรกusulas 'limit' e 'Orders', para fornecer mais flexibilidade ao executar consultas. Veremos os seguintes modificadores de consulta

MongoDB Limitar resultados da consulta

Este modificador รฉ usado para limitar o nรบmero de documentos retornados no conjunto de resultados de uma consulta. O exemplo a seguir mostra como isso pode ser feito.

db.Employee.find().limit(2).forEach(printjson);

Code Explicaรงรฃo

  • O cรณdigo acima usa a funรงรฃo find que retorna todos os documentos da coleรงรฃo, mas depois usa a clรกusula limit para limitar o nรบmero de documentos retornados a apenas 2.

saรญda

Se o comando for executado com sucesso, a seguinte saรญda serรก mostrada

MongoDB Limitar resultados da consulta

A saรญda mostra claramente que, como existe um modificador de limite, no mรกximo apenas 2 registros sรฃo retornados como parte do conjunto de resultados com base no ObjectId em ordem crescente.

MongoDB Classificar por ordem decrescente

Pode-se especificar a ordem dos documentos a serem devolvidos com base na ordem crescente ou decrescente de qualquer chave da coleรงรฃo. O exemplo a seguir mostra como isso pode ser feito.

db.Employee.find().sort({Employeeid:-1}).forEach(printjson)

Code Explicaรงรฃo

  • O cรณdigo acima usa a funรงรฃo sort que retorna todos os documentos da coleรงรฃo, mas depois usa o modificador para alterar a ordem em que os registros sรฃo retornados. Aqui o -1 indica que queremos retornar os documentos com base na ordem decrescente do ID do Funcionรกrio.

Se o comando for executado com sucesso, a seguinte saรญda serรก mostrada

saรญda

MongoDB Classificar por ordem decrescente

A saรญda mostra claramente os documentos sendo retornados em ordem decrescente do Employeeid.

A ordem crescente รฉ definida pelo valor 1.

MongoDB Ordenar por ordem crescente

Assim como a funรงรฃo `sort()` pode retornar documentos em ordem decrescente, ela tambรฉm pode retornรก-los em ordem crescente. A ordem crescente รฉ definida pelo valor 1 no objeto de ordenaรงรฃo. Isso organiza os documentos do menor para o maior valor, o que รฉ รบtil para listar registros do mais antigo para o mais recente ou de A a Z.

O exemplo a seguir classifica todos os documentos de funcionรกrios por ID do funcionรกrio em ordem crescente:

db.Employee.find().sort({Employeeid:1}).forEach(printjson)

Eis como a consulta funciona:

  • A funรงรฃo find() recupera todos os documentos da coleรงรฃo Employee.
  • sort({Employeeid:1}) ordena os resultados pelo campo Employeeid, do ID mais baixo para o mais alto.
  • forEach(printjson) imprime cada documento em JSON legรญvel.

Ao executar este comando, os documentos aparecem em ordem crescente de Employeeid. A ordem crescente tambรฉm รฉ a direรงรฃo padrรฃo, portanto, deixar o valor como 1 resulta em uma ordenaรงรฃo do menor para o maior no campo escolhido. Para inverter o resultado, basta alterar o valor de 1 para -1. Vocรช tambรฉm pode usar a funรงรฃo limit() em sequรชncia para retornar apenas os primeiros registros ordenados.

MongoDB Pular() para paginaรงรฃo

O mรฉtodo skip() informa MongoDB Ignora um determinado nรบmero de documentos antes de retornar o restante. Por si sรณ, `skip()` raramente รฉ รบtil, mas combinado com `limit()`, cria paginaรงรฃo, permitindo exibir os resultados uma pรกgina por vez.

O exemplo a seguir ignora os dois primeiros funcionรกrios e retorna os dois seguintes:

db.Employee.find().skip(2).limit(2).forEach(printjson)

Para criar a navegaรงรฃo pรกgina por pรกgina, siga este padrรฃo:

  1. Defina o tamanho da pรกgina, por exemplo, 2 documentos por pรกgina.
  2. Multiplique o tamanho da pรกgina pelo nรบmero da pรกgina menos um para obter o valor de salto.
  3. Passe esse valor para skip() e o tamanho da pรกgina para limit().

Por exemplo, a pรกgina 1 usa skip(0).limit(2), a pรกgina 2 usa skip(2).limit(2) e a pรกgina 3 usa skip(4).limit(2). Sempre adicione tambรฉm um sort(), para que a ordem dos documentos permaneรงa estรกvel entre as pรกginas. Observe que valores de skip muito grandes podem ser lentos em coleรงรตes grandes, porque MongoDB O sistema ainda verifica e descarta os documentos ignorados; a paginaรงรฃo baseada em intervalo รฉ mais rรกpida em grande escala.

Classificar por vรกrios campos em MongoDB

MongoDB ร‰ possรญvel classificar por mais de um campo simultaneamente. Vocรช lista os campos no objeto de classificaรงรฃo em ordem de prioridade, e MongoDB A ordenaรงรฃo รฉ feita pelo primeiro campo, depois o campo seguinte รฉ usado para desempatar, e assim por diante.

O exemplo a seguir classifica os funcionรกrios por nome em ordem crescente e, para funcionรกrios com o mesmo nome, por ID do funcionรกrio em ordem decrescente:

db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)

A ordem das chaves no objeto de classificaรงรฃo รฉ importante: EmployeeName รฉ aplicado primeiro porque aparece primeiro. Essa classificaรงรฃo por mรบltiplas chaves รฉ รบtil para relatรณrios em que vocรช agrupa por um campo e, em seguida, classifica dentro de cada grupo. Para obter o melhor desempenho em coleรงรตes grandes, crie um รญndice composto que corresponda aos campos e ร s direรงรตes usadas na classificaรงรฃo.

Perguntas Frequentes

Sem a funรงรฃo sort(), MongoDB Retorna os documentos em ordem natural, que geralmente reflete a ordem em que estรฃo no disco e nรฃo รฉ garantida. Para uma ordem previsรญvel, sempre adicione um sort() explรญcito em um campo como _id.

Logicamente, MongoDB A funรงรฃo `sort()` รฉ sempre aplicada antes de `limit()`, independentemente da ordem em que sรฃo encadeadas. Isso significa que `limit()` retorna os documentos mais relevantes do resultado ordenado, e nรฃo um subconjunto aleatรณrio que รฉ entรฃo ordenado.

A ordenaรงรฃo de grandes conjuntos de resultados sem um รญndice forรงa uma ordenaรงรฃo em memรณria, que falha quando o limite de memรณria รฉ excedido. Criar um รญndice no campo de ordenaรงรฃo permite MongoDB Retornar resultados ordenados de forma eficiente.

A IA consegue transformar uma simples solicitaรงรฃo como "os cinco funcionรกrios mais recentes" em uma consulta find().sort().limit() com a direรงรฃo e a contagem corretas. Ela tambรฉm explica cada modificador para que os iniciantes aprendam o padrรฃo.

Sim. A IA pode inspecionar um plano de consulta, detectar classificaรงรตes em memรณria e recomendar o รญndice necessรกrio para suportar a classificaรงรฃo. Isso ajuda os desenvolvedores a acelerar as consultas de classificaรงรฃo e limitaรงรฃo em coleรงรตes grandes.

Resuma esta postagem com: