Antworten:
Die Sortierung in Mongoose hat sich im Laufe der Veröffentlichungen dahingehend weiterentwickelt, dass einige dieser Antworten nicht mehr gültig sind. Ab der Version 4.1.x von Mongoose kann eine absteigende Sortierung auf dem dateFeld auf eine der folgenden Arten durchgeführt werden:
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) { ... });
Für eine aufsteigende Sortierung, lassen Sie den -Präfix auf den String - Version oder Gebrauchswerte von 1, ascoder ascending.
findMethode in den Dokumenten. Siehe Model.find.
Module#propertyNotation verwendeten und suchte nach #find. Es scheint, dass es keine einfache Möglichkeit gibt, in den Dokumenten zu navigieren oder zu suchen. Die Suche nach Fund ergibt 187 Ergebnisse.
_idFeld sortieren . Um beispielsweise den neuesten Datensatz zu erhalten, haben Sie folgende Möglichkeiten:await db.collection.findOne().sort({ _id: -1 });
Die richtige Antwort ist:
Blah.find({}).sort({date: -1}).execFind(function(err,docs){
});
Ich habe mich heute mit Mongoose 3.5 (.2) mit diesem Problem befasst, und keine der Antworten hat mir wirklich geholfen, dieses Problem zu lösen. Das folgende Code-Snippet macht den Trick
Post.find().sort('-posted').find(function (err, posts) {
// user posts array
});
Sie können alle Standardparameter senden, die Sie benötigen find()(z. B. where-Klauseln und Rückgabefelder), aber keinen Rückruf. Ohne Rückruf wird ein Abfrageobjekt zurückgegeben, das Sie verketten sort(). Sie müssen find()erneut aufrufen (mit oder ohne weitere Parameter - sollte aus Effizienzgründen keine benötigen), damit Sie die Ergebnismenge in Ihrem Rückruf erhalten.
Post.find().sort({date:-1}, function(err, posts){
});
Sollte auch funktionieren
BEARBEITEN:
Sie können dies auch versuchen, wenn der Fehler angezeigt wird sort() only takes 1 Argument:
Post.find({}, {
'_id': 0, // select keys to return here
}, {sort: '-date'}, function(err, posts) {
// use it here
});
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
Kurze Lösung:
const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }
Room.find(query, projection, options).exec(function(err, docs) { ... });
Sehen Sie, ob dies hilft> Wie sortiere ich Mungo?
Lesen Sie auch diese> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
Sie können auch nach _idFeld sortieren . Um beispielsweise den neuesten Datensatz zu erhalten, können Sie Folgendes tun:
const mostRecentRecord = await db.collection.findOne().sort({ _id: -1 });
Es geht auch viel schneller, weil ich mehr als bereit bin zu wetten, dass Ihr dateFeld nicht indiziert ist.
Query#find([criteria], [callback]). Ich dachte, vielleicht gab es einen geheimen Handschlag, der besagt, dass "Kriterien" bis zu drei Argumente umfassen können, aber der Typ wird als "Objekt" aufgeführt.