En Mangosta, ¿cómo puedo ordenar por fecha? (nodo.js)


Digamos que corro esta consulta en Mangosta:

Room.find({}, function(err,docs){

}).sort({date:-1}); 

Esto no funciona!

Author: TIMEX, 2011-04-29

7 answers

Ordenar en Mangosta ha evolucionado sobre las versiones de tal manera que algunas de estas respuestas ya no son válidas. A partir del 4.1.x liberación de Mangosta, una clasificación descendente en el campo date se puede hacer de cualquiera de las siguientes maneras:

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 una ordenación ascendente, omita el prefijo - en la versión de cadena o utilice valores de 1, asc, o ascending.

 333
Author: JohnnyHK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-22 21:08:45

La respuesta correcta es:

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

});
 50
Author: TIMEX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-02 21:10:18

Ha estado lidiando con este problema hoy usando Mangosta 3.5(.2) y ninguna de las respuestas me ayudó a resolver este problema. El siguiente fragmento de código hace el truco

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 where y campos return) pero no callback. Sin una devolución de llamada, devuelve un objeto de consulta en el que se encadena sort(). Usted necesita llamar a find() de nuevo (con o sin parámetros más -- no debería necesitar ningún por razones de eficiencia) que se le permite obtener el conjunto de resultados en su devolución de llamada.

 11
Author: Jimmy Hillis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-28 04:20:20

Hago esto:

Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) {
    ...
})

Esto mostrará primero las cosas más recientes.

 4
Author: Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-06 19:02:09
Post.find().sort({date:-1}, function(err, posts){
});

Debería funcionar también

EDITAR:

También puedes intentar usar esto si obtienes el error sort() only takes 1 Argument:

Post.find({}, {
    '_id': 0,    // select keys to return here
}, {sort: '-date'}, function(err, posts) {
    // use it here
});
 4
Author: lynx_vbg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-07 16:02:33
 1
Author: neebz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:35

Solución corta:

const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }

Room.find(query, projection, options).exec(function(err, docs) { ... });
 1
Author: davidsonsns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-05 13:02:24