Question

Disons que je lance cette requête dans Mongoose:

Room.find({}, function(err,docs){

}).sort({date:-1}); 

Cela ne fonctionne pas!

Était-ce utile?

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
});

Solution à court:

const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }

Room.find(query, projection, options).exec(function(err, docs) { ... });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top