En Mongoose, ¿cómo ordeno por fecha? (nodo.js)
digamos que ejecuto esta consulta en Mongoose:
Room.find({}, (err,docs) => {
}).sort({date:-1});
¡Esto no funciona!
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, date
se 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
, asc
o ascending
.
La respuesta correcta es:
Blah.find({}).sort({date: -1}).execFind(function(err,docs){
});
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.