En Mongoose, ¿cómo ordeno por fecha? (nodo.js)

Resuelto TIMEX asked hace 13 años • 11 respuestas

digamos que ejecuto esta consulta en Mongoose:

    Room.find({}, (err,docs) => {
    
    }).sort({date:-1}); 

¡Esto no funciona!

TIMEX avatar Apr 29 '11 04:04 TIMEX
Aceptado

La clasificación en Mongoose ha evolucionado a lo largo de los lanzamientos, de modo que algunas de estas respuestas ya no son válidas. A partir de la versión 4.1.x de Mongoose, datese puede realizar una clasificación descendente en el campo de cualquiera de las siguientes maneras:

    Room.find({}).sort('-date').exec((err, docs) => { ... });
    Room.find({}).sort({date: -1}).exec((err, docs) => { ... });
    Room.find({}).sort({date: 'desc'}).exec((err, docs) => { ... });
    Room.find({}).sort({date: 'descending'}).exec((err, docs) => { ... });
    Room.find({}).sort([['date', -1]]).exec((err, docs) => { ... });
    Room.find({}, null, {sort: '-date'}, (err, docs) => { ... });
    Room.find({}, null, {sort: {date: -1}}, (err, docs) => { ... });

Para una ordenación ascendente, omita el -prefijo en la versión de la cadena o use valores de 1, asco ascending.

JohnnyHK avatar Feb 26 '2013 03:02 JohnnyHK

La respuesta correcta es:

Blah.find({}).sort({date: -1}).execFind(function(err,docs){

});
TIMEX avatar Apr 29 '2011 10:04 TIMEX

He estado lidiando con este problema hoy usando Mongoose 3.5 (.2) y ninguna de las respuestas me ayudó a resolverlo. El siguiente fragmento de código funciona

Post.find().sort('-posted').find(function (err, posts) {
    // user posts array
});

Puede enviar cualquier parámetro estándar que necesite find()(por ejemplo, cláusulas donde y campos de retorno), pero no devolución de llamada. Sin una devolución de llamada, devuelve un objeto Query que encadena sort(). Debe llamar find()nuevamente (con o sin más parámetros; no debería necesitar ninguno por razones de eficiencia), lo que le permitirá obtener el resultado establecido en su devolución de llamada.

Jimmy Hillis avatar Dec 28 '2012 04:12 Jimmy Hillis