Digamos que ejecuto esta consulta en Mongoose:
Room.find({}, function(err,docs){
}).sort({date:-1}); ¡Esto no funciona!
La clasificación en Mongoose ha evolucionado a lo largo de los lanzamientos de manera 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(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 un orden ascendente, omitir el -prefijo de la versión de cadena o valores de uso de 1, asco ascending.
Query#find([criteria], [callback]). Pensé que tal vez había un apretón de manos secreto que dice que "criterios" pueden tener hasta tres argumentos, pero enumera el tipo como "Objeto".findmétodo incorrecto en los documentos. VerModel.find.Module#propertynotación y busqué#find. Parece que no hay una manera fácil de navegar o buscar en los documentos. La búsqueda de resultados arroja 187 resultados._idcampo. Por ejemplo, para obtener el registro más reciente, puede hacer:await db.collection.findOne().sort({ _id: -1 });La respuesta correcta es:
fuente
He estado lidiando con este problema hoy usando Mongoose 3.5 (.2) y ninguna de las respuestas me ayudó a resolver este problema. El siguiente fragmento de código hace el truco
Puede enviar cualquier parámetro estándar que necesite
find()(p. Ej., Cláusulas where y campos de retorno) pero sin devolución de llamada. Sin una devolución de llamada, devuelve un objeto de consulta que se encadenasort().find()Debe volver a llamar (con o sin más parámetros, no debería necesitar ninguno por razones de eficiencia), lo que le permitirá obtener el conjunto de resultados en su devolución de llamada.fuente
Hago esto:
Esto mostrará primero las cosas más recientes.
fuente
$orderbyestá en desuso en MongoDB 3.2, por lo que ya no debería usarse.Debería funcionar también
EDITAR:
También puede intentar usar esto si obtiene el error
sort() only takes 1 Argument:fuente
Error: sort() only takes 1 ArgumentPost.find({}, {'_id': 0}).sort("-date").function(err, posts){});Solución corta:
fuente
Vea si esto ayuda> ¿Cómo ordenar en mangosta?
Lea también esto> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
fuente
También puede ordenar por
_idcampo. Por ejemplo, para obtener el registro más reciente, puede hacer,También es mucho más rápido, porque estoy más que dispuesto a apostar que su
datecampo no está indexado.fuente