Estoy usando MongoDB con Node.JS. Tengo una colección que contiene una fecha y otras filas. La fecha es un Date
objeto de JavaScript .
¿Cómo puedo ordenar esta colección por fecha?
date
columna: stackoverflow.com/questions/5125521/…
Estoy usando MongoDB con Node.JS. Tengo una colección que contiene una fecha y otras filas. La fecha es un Date
objeto de JavaScript .
¿Cómo puedo ordenar esta colección por fecha?
date
columna: stackoverflow.com/questions/5125521/…
Respuestas:
Solo una ligera modificación a la respuesta de @JohnnyHK
collection.find().sort({datefield: -1}, function(err, cursor){...});
En muchos casos de uso, deseamos que se devuelvan los últimos registros (como para las últimas actualizaciones / inserciones).
Date
objetos sin una función no me funciona en 2.6.3.
collection.find().sort(...).exec(function(err, cursor) {})
Ordenar por fecha no requiere nada especial. Simplemente ordene por el campo de fecha deseado de la colección.
Actualizado para el controlador nativo de 1.4.28 node.js, puede ordenar de forma ascendente datefield
utilizando cualquiera de las siguientes formas:
collection.find().sort({datefield: 1}).toArray(function(err, docs) {...});
collection.find().sort('datefield', 1).toArray(function(err, docs) {...});
collection.find().sort([['datefield', 1]]).toArray(function(err, docs) {...});
collection.find({}, {sort: {datefield: 1}}).toArray(function(err, docs) {...});
collection.find({}, {sort: [['datefield', 1]]}).toArray(function(err, docs) {...});
'asc'
o 'ascending'
también se puede usar en lugar de 1
.
Para descendente tipo, uso 'desc'
, 'descending'
o -1
en lugar de la 1
.
db.getCollection('').find({}).sort({_id:-1})
Esto ordenará su colección en orden descendente según la fecha de inserción
Las respuestas de Sushant Gupta están un poco desactualizadas y ya no funcionan.
El siguiente fragmento debería ser así ahora:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
toArray
parte.
Esto funcionó para mí:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
Usando Node.js, Express.js y Monk
collection.find().sort('date':1).exec(function(err, doc) {});
esto funcionó para mí
se hace referencia https://docs.mongodb.org/getting-started/node/query/
si su formato de fecha es así: 14/02/1989 ----> puede encontrar algunos problemas
necesitas usar ISOdate así:
var start_date = new Date(2012, 07, x, x, x);
-----> el resultado ------> ISODate ("2012-07-14T08: 14: 00.201Z")
ahora solo usa la consulta de esta manera:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
Eso es :)
Con mangosta no pude usar 'toArray' y recibí el error: TypeError: Collection.find(...).sort(...).toArray is not a function.
la función toArray existe en la clase Cursor del controlador Native MongoDB NodeJS ( referencia ).
También sort acepta solo un parámetro, por lo que no puede pasar su función dentro de él.
Esto funcionó para mí (como respondió Emil ):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})