Angenommen, ich führe diese Abfrage in Mongoose aus:
Room.find({}, function(err,docs){
}).sort({date:-1});
Das funktioniert nicht!
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
.
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.find
Methode in den Dokumenten. SieheModel.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:
quelle
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
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 verkettensort()
. Sie müssenfind()
erneut aufrufen (mit oder ohne weitere Parameter - sollte aus Effizienzgründen keine benötigen), damit Sie die Ergebnismenge in Ihrem Rückruf erhalten.quelle
Ich mache das:
Dies zeigt zuerst die neuesten Dinge.
quelle
$orderby
ist in MongoDB 3.2 veraltet und sollte daher nicht mehr verwendet werden.Sollte auch funktionieren
BEARBEITEN:
Sie können dies auch versuchen, wenn der Fehler angezeigt wird
sort() only takes 1 Argument
:quelle
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
Kurze Lösung:
quelle
Sehen Sie, ob dies hilft> Wie sortiere ich Mungo?
Lesen Sie auch diese> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
quelle
Sie können auch nach
_id
Feld sortieren . Um beispielsweise den neuesten Datensatz zu erhalten, können Sie Folgendes tun:Es geht auch viel schneller, weil ich mehr als bereit bin zu wetten, dass Ihr
date
Feld nicht indiziert ist.quelle