En Mongoose, comment puis-je trier par date? (Node.js)
Question
Disons que je lance cette requête dans Mongoose:
Room.find({}, function(err,docs){
}).sort({date:-1});
Cela ne fonctionne pas!
La solution
tri Mongoose a évolué au fil des versions telles que certaines de ces réponses ne sont plus valables. À la 4.1.x libération de Mongoose, un descendant tri sur le champ date
peut être fait dans l'une des façons suivantes:
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) { ... });
Pour un tri croissant, omettez le préfixe -
sur la version de chaîne ou les valeurs de l'utilisation 1
, asc
ou ascending
.
Autres conseils
La bonne réponse est:
Blah.find({}).sort({date: -1}).execFind(function(err,docs){
});
eu affaire à ce problème aujourd'hui en utilisant Mongoose 3,5 (0,2) et aucune des réponses me assez aidé à résoudre ce problème. L'extrait de code suivant fait le tour
Post.find().sort('-posted').find(function (err, posts) {
// user posts array
});
Vous pouvez envoyer des paramètres standard, vous devez find()
(par exemple lorsque des clauses et des champs de retour), mais pas rappel. Sans un rappel, il retourne un objet de requête que vous enchaînez sur sort()
. Vous devez find()
d'appeler à nouveau (avec ou sans paramètres plus - ne devrait pas demander, pour des raisons d'efficacité) qui vous permettra d'obtenir le jeu de résultats dans votre rappel
Je fais ceci:
Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) {
...
})
Cela montrera les plus récentes d'abord.
Post.find().sort({date:-1}, function(err, posts){
});
Le travail devrait également
EDIT:
Vous pouvez également essayer d'utiliser si vous obtenez le sort() only takes 1 Argument
d'erreur:
Post.find({}, {
'_id': 0, // select keys to return here
}, {sort: '-date'}, function(err, posts) {
// use it here
});
Voir si cela aide> Comment trier dans mangouste?
A lire également ce> http://www.mongodb.org / affichage / DOCS / tri + et + naturel + commande
Solution à court:
const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }
Room.find(query, projection, options).exec(function(err, docs) { ... });