167 votes

Comment trier une collection par date dans MongoDB ?

J'utilise MongoDB avec Node.JS. J'ai une collection qui contient une date et d'autres lignes. La date est un fichier JavaScript Date objet.

Comment puis-je trier cette collection par date ?

245voto

Sushant Gupta Points 2029

Juste une légère modification à la réponse de @JohnnyHK

collection.find().sort({datefield: -1}, function(err, cursor){...});

Dans de nombreux cas d'utilisation, nous souhaitons que les derniers enregistrements soient renvoyés (comme pour les dernières mises à jour/insertions).

69voto

Rich Rajah Points 136
db.getCollection('').find({}).sort({_id:-1}) 

Cela permettra de trier votre collection par ordre décroissant en fonction de la date d'insertion.

46voto

JohnnyHK Points 61191

Le tri par date ne nécessite rien de particulier. Il suffit de trier par le champ de date souhaité de la collection.

Mis à jour pour le pilote natif node.js 1.4.28, vous pouvez trier par ordre croissant sur datefield en utilisant l'une des méthodes suivantes :

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' peut également être utilisé à la place de l 1 .

Pour un tri décroissant, utilisez 'desc' , 'descending' ou -1 à la place de la 1 .

16voto

krikara Points 710

Les réponses de Sushant Gupta sont un peu dépassées et ne fonctionnent plus.

L'extrait suivant devrait ressembler à ceci maintenant :

collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});

12voto

GoldfishGrenade Points 127

Cela a marché pour moi :

collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });

Utilisation de Node.js, Express.js et Monk

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X