Używam MongoDB z Node.JS. Mam kolekcję zawierającą datę i inne wiersze. Data jest obiektem JavaScript Date
.
Jak mogę posortować tę kolekcję według daty?
date
kolumny: stackoverflow.com/questions/5125521/ ...
Używam MongoDB z Node.JS. Mam kolekcję zawierającą datę i inne wiersze. Data jest obiektem JavaScript Date
.
Jak mogę posortować tę kolekcję według daty?
date
kolumny: stackoverflow.com/questions/5125521/ ...
Odpowiedzi:
Tylko niewielka modyfikacja odpowiedzi @JohnnyHK
collection.find().sort({datefield: -1}, function(err, cursor){...});
W wielu przypadkach chcemy, aby zwracane były najnowsze rekordy (np. Najnowsze aktualizacje / wstawki).
Date
obiektów bez funkcji nie działa dla mnie w 2.6.3.
collection.find().sort(...).exec(function(err, cursor) {})
Sortowanie według daty nie wymaga niczego specjalnego. Po prostu posortuj według żądanego pola daty kolekcji.
Zaktualizowano dla natywnego sterownika 1.4.28 node.js, możesz sortować rosnąco, datefield
korzystając z jednego z następujących sposobów:
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'
lub 'ascending'
może być również używany zamiast 1
.
Aby posortować malejąco, użyj 'desc'
, 'descending'
lub -1
w miejsce 1
.
db.getCollection('').find({}).sort({_id:-1})
Spowoduje to posortowanie kolekcji w porządku malejącym na podstawie daty wstawienia
Odpowiedzi Sushanta Gupty są nieco przestarzałe i już nie działają.
Poniższy fragment powinien teraz wyglądać tak:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
toArray
części.
To zadziałało dla mnie:
collection.find({}, {"sort" : [['datefield', 'asc']]}, function (err, docs) { ... });
Korzystanie z Node.js, Express.js i Monk
collection.find().sort('date':1).exec(function(err, doc) {});
to działało dla mnie
o którym mowa https://docs.mongodb.org/getting-started/node/query/
jeśli Twój format daty jest taki: 14/02/1989 ----> możesz napotkać pewne problemy
musisz użyć ISOdate w następujący sposób:
var start_date = new Date(2012, 07, x, x, x);
-----> wynik ------> ISODate ("2012-07-14T08: 14: 00.201Z")
teraz po prostu użyj takiego zapytania:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
Otóż to :)
W przypadku mongoose nie mogłem użyć 'toArray' i otrzymywałem błąd: TypeError: Collection.find(...).sort(...).toArray is not a function.
Funkcja toArray istnieje w klasie Cursor ze sterownika Native MongoDB NodeJS ( odniesienie ).
Również sort akceptuje tylko jeden parametr, więc nie możesz przekazać do niego swojej funkcji.
To zadziałało dla mnie (jak odpowiedział Emil ):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})