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, date
se 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
, asc
o 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".find
método incorrecto en los documentos. VerModel.find
.Module#property
notació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._id
campo. 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
$orderby
está 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 Argument
Post.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
_id
campo. 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
date
campo no está indexado.fuente