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 date
Feld 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
, asc
oder ascending
.
find
Methode in den Dokumenten. Siehe Model.find
.
Module#property
Notation 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.
_id
Feld 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 _id
Feld 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 date
Feld 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.