$orderby
Observação
Descontinuado desde a v3.2
A partir de3.2 v, o operador
$orderby
mongosh
é preterido no . Em ,mongosh
usecursor.sort()
.O operador
$orderby
classifica os resultados de uma query em ordem crescente ou decrescente.mongosh
fornece o métodocursor.sort()
:db.collection.find().sort( { age: -1 } ) Você também pode especificar a opção em um dos seguintes formulários:
db.collection.find()._addSpecial( "$orderby", { age : -1 } ) db.collection.find( { $query: {}, $orderby: { age : -1 } } ) Esses exemplos retornam todos os documentos na coleção chamada
collection
classificados pelo campoage
em ordem decrescente. Especifique um valor para$orderby
de um negativo (por exemplo-1
, como acima) para classificar em ordem decrescente ou um valor positivo (por exemplo1
) para classificar em ordem crescente.
Comportamento
Como os índices contêm registros ordenados, o MongoDB pode obter os resultados de uma classificação a partir de um índice que inclua os campos de classificação. O MongoDB pode usar vários índices para dar suporte a uma operação de classificação se a classificação usar os mesmos índices que o predicado da query.
Se o MongoDB não puder usar um índice ou índices para obter a ordem de classificação, o MongoDB deverá executar uma operação de classificação de bloqueio nos dados. Uma classificação de bloqueio indica que o MongoDB deve consumir e processar todos os documentos de entrada para a classificação antes de retornar os resultados. As classificações de bloqueio não bloqueiam operações simultâneas na coleção ou no banco de dados.
As operações de classificação que usam um índice geralmente têm melhor desempenho do que os ordenadores bloqueantes. Para obter mais informações sobre como criar índices para dar suporte a operações de classificação, consulte Usar índices para classificar resultados de queries.
Se o MongoDB exigir o uso de mais de 100 megabytes de memória do sistema para a operação de classificação de bloqueio, o MongoDB retornará um erro a menos que a query especifique cursor.allowDiskUse()
(Novo no MongoDB 4.4). allowDiskUse()
permite que o MongoDB use arquivos temporários no disco para armazenar dados que excedam o limite de memória do sistema de 100 megabytes ao processar uma ordenador bloqueante.
Para evitar esse erro, crie um índice para dar suporte à operação de classificação ou use $orderby
em conjunto com cursor.maxTimeMS()
e/ou cursor.limit()
. O cursor.limit()
aumenta a velocidade e reduz a quantidade de memória necessária para retornar essa query por meio de um algoritmo otimizado. O limite especificado deve resultar em vários documentos dentro do limite 100 megabyte.