J'utilise MongoDB avec Node.JS. J'ai une collection qui contient une date et d'autres lignes. La date est un Date
objet JavaScript .
Comment puis-je trier cette collection par date?
date
colonne: stackoverflow.com/questions/5125521/…
J'utilise MongoDB avec Node.JS. J'ai une collection qui contient une date et d'autres lignes. La date est un Date
objet JavaScript .
Comment puis-je trier cette collection par date?
date
colonne: stackoverflow.com/questions/5125521/…
Réponses:
Juste une légère modification de la réponse @JohnnyHK
collection.find().sort({datefield: -1}, function(err, cursor){...});
Dans de nombreux cas d'utilisation, nous souhaitons avoir les derniers enregistrements à renvoyer (comme pour les dernières mises à jour / insertions).
Date
objets sans fonction ne fonctionne pas pour moi sur 2.6.3.
collection.find().sort(...).exec(function(err, cursor) {})
Le tri par date ne nécessite rien de spécial. Triez simplement 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 en datefield
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'
ou 'ascending'
peut également être utilisé à la place de 1
.
Pour trier décroissant, l' utilisation 'desc'
, 'descending'
ou -1
à la place du 1
.
db.getCollection('').find({}).sort({_id:-1})
Cela triera votre collection par ordre décroissant en fonction de la date d'insertion
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) {});
toArray
pièce.
Cela a fonctionné pour moi:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
Utilisation de Node.js, Express.js et Monk
collection.find().sort('date':1).exec(function(err, doc) {});
cela a fonctionné pour moi
référencé https://docs.mongodb.org/getting-started/node/query/
si votre format de date est comme ceci: 14/02/1989 ----> vous pouvez rencontrer des problèmes
vous devez utiliser ISOdate comme ceci:
var start_date = new Date(2012, 07, x, x, x);
-----> le résultat ------> ISODate ("2012-07-14T08: 14: 00.201Z")
maintenant, utilisez simplement la requête comme ceci:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
c'est tout :)
Avec mongoose, je n'ai pas pu utiliser 'toArray' et j'ai obtenu l'erreur: TypeError: Collection.find(...).sort(...).toArray is not a function.
La fonction toArray existe sur la classe Cursor du pilote Native MongoDB NodeJS ( référence ).
Sort n'accepte également qu'un seul paramètre, vous ne pouvez donc pas y passer votre fonction.
Cela a fonctionné pour moi (comme l'a répondu Emil ):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})