digamos que eu execute esta consulta no Mongoose:
Room.find({}, function(err,docs){
}).sort({date:-1});
Isso não funciona!
A classificação no Mongoose evoluiu ao longo dos lançamentos, de modo que algumas dessas respostas não são mais válidas. A partir da versão 4.1.x do Mongoose, uma classificação decrescente no date
campo pode ser feita das seguintes maneiras:
Room.find({}).sort('-date').exec(function(err, docs) { ... });
Room.find({}).sort({date: -1}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'desc'}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'descending'}).exec(function(err, docs) { ... });
Room.find({}).sort([['date', -1]]).exec(function(err, docs) { ... });
Room.find({}, null, {sort: '-date'}, function(err, docs) { ... });
Room.find({}, null, {sort: {date: -1}}, function(err, docs) { ... });
Para um tipo ascendente, omitir o -
prefixo nos valores versão string ou uso de 1
, asc
ou ascending
.
Query#find([criteria], [callback])
. Eu pensei que talvez houvesse algum aperto de mão secreto que diz que "critérios" podem ter até três argumentos, mas lista o tipo como "Objeto".find
método errado nos documentos. VejaModel.find
.Module#property
notação e procurei#find
. Parece que não há uma maneira fácil de navegar ou pesquisar os documentos. A busca por localização produz 187 resultados._id
campo. Por exemplo, para obter o registro mais recente, você pode:await db.collection.findOne().sort({ _id: -1 });
A resposta correta é:
fonte
Hoje lidei com esse problema usando o Mongoose 3.5 (.2) e nenhuma das respostas me ajudou a resolver esse problema. O seguinte trecho de código faz o truque
Você pode enviar qualquer parâmetro padrão necessário
find()
(por exemplo, cláusulas where e campos de retorno), mas sem retorno de chamada. Sem retorno de chamada, ele retorna um objeto Query no qual você encadeiasort()
. É necessário ligarfind()
novamente (com ou sem mais parâmetros - não deve ser necessário por motivos de eficiência), o que permitirá obter o conjunto de resultados no retorno de chamada.fonte
Eu faço isso:
Isso mostrará as coisas mais recentes primeiro.
fonte
$orderby
foi descontinuado no MongoDB 3.2 e, portanto, não deve mais ser usado.Deve funcionar também
EDITAR:
Você também pode tentar usar isso se receber o erro
sort() only takes 1 Argument
:fonte
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
Solução curta:
fonte
Veja se isso ajuda> Como classificar em mangusto?
Leia também> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
fonte
Você também pode classificar por
_id
campo. Por exemplo, para obter o registro mais recente, você pode fazer,É muito mais rápido também, porque estou mais do que disposto a apostar que seu
date
campo não está indexado.fonte