it-swarm.com.de

Wie sortiere ich eine Sammlung in MongoDB nach Datum?

Ich benutze MongoDB mit Node.JS. Ich habe eine Sammlung, die ein Datum und andere Zeilen enthält. Das Datum ist ein JavaScript Date -Objekt.

Wie kann ich diese Sammlung nach Datum sortieren?

106
flow

Nur eine kleine Änderung an @ JohnnyHK Antwort

collection.find().sort({datefield: -1}, function(err, cursor){...});

In vielen Anwendungsfällen möchten wir, dass die neuesten Datensätze zurückgesandt werden (z. B. für die neuesten Aktualisierungen/Einfügungen).

153
Sushant Gupta

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. Sie können auf folgende Arten aufsteigend nach datefield sortieren:

collection.find().sort({datefield: 1}).toArray(function(err, docs) {...});
collection.find().sort('datefield', 1).toArray(function(err, docs) {...});
collection.find().sort([['datefield', 1]]).toArray(function(err, docs) {...});
collection.find({}, {sort: {datefield: 1}}).toArray(function(err, docs) {...});
collection.find({}, {sort: [['datefield', 1]]}).toArray(function(err, docs) {...});

'asc' Oder 'ascending' Können auch anstelle von 1 Verwendet werden.

Verwenden Sie zum Sortieren in absteigender Reihenfolge 'desc', 'descending' Oder -1 Anstelle von 1.

34
JohnnyHK
db.getCollection('').find({}).sort({_id:-1}) 

Dadurch wird Ihre Sammlung in absteigender Reihenfolge nach dem Datum des Einfügens sortiert

19
Rich Rajah

Sushant Guptas Antworten sind ein bisschen veraltet und funktionieren nicht mehr.

Das folgende Snippet sollte jetzt so aussehen:

collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});

16
krikara

Das hat bei mir funktioniert:

collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });

Verwenden von Node.js, Express.js und Monk

12
GoldfishGrenade
collection.find().sort('date':1).exec(function(err, doc) {});

das hat bei mir funktioniert

verwiesen https://docs.mongodb.org/getting-started/node/query/

6
Mendon Ashwini

Mit Mungo ist es so einfach wie:

collection.find().sort('-date').exec(function(err, collectionItems) {
  // here's your code
})
5
emil.c

Zusätzliches Quadrat [] Eine Klammer ist erforderlich, damit die Sortierparameter funktionieren.

collection.find({}, {"sort" : [['datefield', 'asc']]} ).toArray(function(err,docs) {});
4
DB Prasad

wenn Ihr Datumsformat wie folgt lautet: 14/02/1989 ----> Möglicherweise treten Probleme auf

sie müssen ISOdate wie folgt verwenden:

var start_date = new Date(2012, 07, x, x, x); 

-----> das Ergebnis ------> ISODate ("2012-07-14T08: 14: 00.201Z")

benutze jetzt einfach die Abfrage wie folgt:

 collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}

das ist es :)

2
Amine_Dev

Mit Mungo konnte ich 'toArray' nicht verwenden und bekam den Fehler: TypeError: Collection.find(...).sort(...).toArray is not a function. Die toArray-Funktion existiert in der Cursor-Klasse des Native MongoDB NodeJS-Treibers ( reference ).

Außerdem akzeptiert sort nur einen Parameter, sodass Sie Ihre Funktion nicht darin übergeben können.

Das hat bei mir geklappt (wie von Emil ):

collection.find().sort('-date').exec(function(error, result) {
  // Your code
})
0
Pransh Tiwari