simple, collection.find (). sort ({datefield: 1}, function (err, cursor) {...}); o también puede usar collection.find (). sort ({datefield: -1}, function (err, cursor) {...});
¿Qué piensa poner en la función? Solo tratar de ordenar Dateobjetos sin una función no me funciona en 2.6.3.
Sam Brightman el
@SamBrightman Esa función es solo una devolución de llamada. Independientemente de lo que desee hacer con el resultado de la consulta, ponga esa lógica dentro de su devolución de llamada. Puede leer más sobre qué son las devoluciones de llamada y cómo funcionan para aprender la programación basada en eventos.
Sushant Gupta
Claro, sé lo que es una devolución de llamada. Solo vi el requisito de clasificación en la pregunta y todas las respuestas dan devoluciones de llamada. Al mismo tiempo, la clasificación no funcionaba para mí, así que pensé que tal vez tengas que hacer un trabajo adicional en la función.
Sam Brightman
1
@SamBrightman Oh, ok. Para mayor comodidad, puede ser explícito y encadenarcollection.find().sort(...).exec(function(err, cursor) {})
Sushant Gupta
55
dice sort () solo toma 1 argumento
Jitendra Pancholi
39
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 datefieldutilizando cualquiera de las siguientes formas:
@JohnnyHK Sweet. No recuerdo el escenario exacto, pero el verano pasado estaba tratando de hacer que el tipo funcionara con el fragmento de Sushant y simplemente no estaba funcionando para mí. Quizás es porque le faltaba la toArrayparte.
krikara
Esta es en realidad una respuesta incorrecta, da un resultado incorrecto en node.js
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.
date
columna: stackoverflow.com/questions/5125521/…Respuestas:
Solo una ligera modificación a la respuesta de @JohnnyHK
En muchos casos de uso, deseamos que se devuelvan los últimos registros (como para las últimas actualizaciones / inserciones).
fuente
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:'asc'
o'ascending'
también se puede usar en lugar de1
.Para descendente tipo, uso
'desc'
,'descending'
o-1
en lugar de la1
.fuente
Esto ordenará su colección en orden descendente según la fecha de inserción
fuente
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) {});
fuente
toArray
parte.Esto funcionó para mí:
Usando Node.js, Express.js y Monk
fuente
esto funcionó para mí
se hace referencia https://docs.mongodb.org/getting-started/node/query/
fuente
Con mangosta es tan simple como:
fuente
Se requiere un corchete adicional [] para que el parámetro de clasificación funcione.
fuente
si su formato de fecha es así: 14/02/1989 ----> puede encontrar algunos problemas
necesitas usar ISOdate así:
-----> el resultado ------> ISODate ("2012-07-14T08: 14: 00.201Z")
ahora solo usa la consulta de esta manera:
Eso es :)
fuente
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 ):
fuente