simple, collection.find (). sort ({datefield: 1}, function (err, cursor) {...}); oder Sie können auch collection.find () verwenden. sort ({datefield: -1}, function (err, cursor) {...});
Was beabsichtigen Sie in die Funktion zu setzen? Nur zu versuchen, DateObjekte ohne Funktion zu sortieren, funktioniert in 2.6.3 für mich nicht.
Sam Brightman
@ SamBrightman Diese Funktion ist nur ein Rückruf. Was auch immer Sie mit dem Abfrageergebnis tun möchten, Sie fügen diese Logik in Ihren Rückruf ein. Sie können mehr darüber lesen, was Rückrufe sind und wie sie funktionieren, um ereignisbasierte Programmierung zu lernen.
Sushant Gupta
Klar, ich weiß, was ein Rückruf ist. Ich habe nur die Sortieranforderung in der Frage gesehen und alle Antworten geben Rückrufe. Gleichzeitig funktionierte das Sortieren bei mir nicht, daher dachte ich, dass Sie möglicherweise zusätzliche Arbeit in der Funktion leisten müssen.
Sam Brightman
1
@ SamBrightman Oh ok. Der Einfachheit halber können Sie explizit und kettenartig seincollection.find().sort(...).exec(function(err, cursor) {})
Sushant Gupta
5
es heißt, sort () braucht nur 1 Argument
Jitendra Pancholi
39
Das Sortieren nach Datum erfordert nichts Besonderes. Sortieren Sie einfach nach dem gewünschten Datumsfeld der Sammlung.
Aktualisiert für den nativen Treiber 1.4.28 node.js, können Sie aufsteigend auf datefieldeine der folgenden Arten sortieren :
Ich wende die obige Lösung auf das Feld "Benutzername" an. Es funktioniert einwandfrei, aber es wird zwischen Groß- und Kleinschreibung unterschieden. Wie wird es ignoriert?
Rahul Matte
Richtige Antwort mit Multi Way (y)
Abdulbarik
28
db.getCollection('').find({}).sort({_id:-1})
Dadurch wird Ihre Sammlung in absteigender Reihenfolge nach dem Datum des Einfügens sortiert
@ JohnnyHK Süß. Ich erinnere mich nicht an das genaue Szenario, aber letzten Sommer habe ich versucht, die Sorte mit Sushants Snippet zum Laufen zu bringen, und es hat bei mir einfach nicht funktioniert. Vielleicht liegt es daran, dass das toArrayTeil fehlte .
Krikara
Dies ist eigentlich eine falsche Antwort, es gibt ein falsches Ergebnis in node.js
Mit Mungo konnte ich 'toArray' nicht verwenden und bekam den Fehler: TypeError: Collection.find(...).sort(...).toArray is not a function.
Die toArray-Funktion ist in der Cursor-Klasse vom Native MongoDB NodeJS-Treiber ( Referenz ) vorhanden.
Außerdem akzeptiert sort nur einen Parameter, sodass Sie Ihre Funktion nicht darin übergeben können.
Das hat bei mir funktioniert (wie von Emil beantwortet ):
collection.find().sort('-date').exec(function(error, result){// Your code})
date
Spalte benötigen : stackoverflow.com/questions/5125521/…Antworten:
Nur eine kleine Änderung an @JohnnyHK Antwort
In vielen Anwendungsfällen möchten wir, dass die neuesten Datensätze zurückgegeben werden (z. B. für die neuesten Updates / Einfügungen).
quelle
Date
Objekte ohne Funktion zu sortieren, funktioniert in 2.6.3 für mich nicht.collection.find().sort(...).exec(function(err, cursor) {})
Das Sortieren nach Datum erfordert nichts Besonderes. Sortieren Sie einfach nach dem gewünschten Datumsfeld der Sammlung.
Aktualisiert für den nativen Treiber 1.4.28 node.js, können Sie aufsteigend auf
datefield
eine der folgenden Arten sortieren :'asc'
oder'ascending'
kann auch anstelle der verwendet werden1
.Absteigend zu sortieren, verwenden
'desc'
,'descending'
oder-1
anstelle des1
.quelle
Dadurch wird Ihre Sammlung in absteigender Reihenfolge nach dem Datum des Einfügens sortiert
quelle
Sushant Guptas Antworten sind etwas veraltet und funktionieren nicht mehr.
Das folgende Snippet sollte jetzt so sein:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
quelle
toArray
Teil fehlte .Das hat bei mir funktioniert:
Verwenden von Node.js, Express.js und Monk
quelle
das hat bei mir funktioniert
verwiesen auf https://docs.mongodb.org/getting-started/node/query/
quelle
Mit Mungo ist es so einfach wie:
quelle
Eine zusätzliche eckige [] Klammer ist erforderlich, damit die Sortierparameter funktionieren.
quelle
Wenn Ihr Datumsformat wie folgt lautet: 14/02/1989 ----> Möglicherweise treten Probleme auf
Sie müssen ISOdate wie folgt verwenden:
-----> das Ergebnis ------> ISODate ("2012-07-14T08: 14: 00.201Z")
Verwenden Sie jetzt einfach die Abfrage wie folgt:
das ist es :)
quelle
Mit Mungo konnte ich 'toArray' nicht verwenden und bekam den Fehler:
TypeError: Collection.find(...).sort(...).toArray is not a function.
Die toArray-Funktion ist in der Cursor-Klasse vom Native MongoDB NodeJS-Treiber ( Referenz ) vorhanden.Außerdem akzeptiert sort nur einen Parameter, sodass Sie Ihre Funktion nicht darin übergeben können.
Das hat bei mir funktioniert (wie von Emil beantwortet ):
quelle