Co zamierzasz umieścić w funkcji? Samo sortowanie Dateobiektów bez funkcji nie działa dla mnie w 2.6.3.
Sam Brightman,
@SamBrightman Ta funkcja to tylko wywołanie zwrotne. Cokolwiek chcesz zrobić z wynikiem zapytania, umieszczasz tę logikę w swoim wywołaniu zwrotnym. Możesz przeczytać więcej o tym, czym są wywołania zwrotne i jak działają, aby nauczyć się programowania opartego na zdarzeniach.
Sushant Gupta
Jasne, wiem, co to jest oddzwonienie. Widziałem tylko wymaganie sortowania w pytaniu i wszystkie odpowiedzi dają oddzwonienie. W tym samym czasie sortowanie u mnie nie działało, więc pomyślałem, że może trzeba będzie wykonać dodatkową pracę w funkcji.
Sam Brightman,
1
@SamBrightman Oh ok. Dla wygody możesz być wyraźny i łańcuchowy jakcollection.find().sort(...).exec(function(err, cursor) {})
Sushant Gupta
5
mówi, że sort () przyjmuje tylko 1 argument
Jitendra Pancholi
39
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, datefieldkorzystając z jednego z następujących sposobów:
@JohnnyHK Sweet. Nie pamiętam dokładnego scenariusza, ale zeszłego lata próbowałem zmusić tego gatunku do pracy z fragmentem Sushanta i po prostu nie działał. Może dlatego, że brakowało jej toArrayczęści.
krikara
To właściwie zła odpowiedź, daje zły wynik w node.js
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.
date
kolumny: stackoverflow.com/questions/5125521/ ...Odpowiedzi:
Tylko niewielka modyfikacja odpowiedzi @JohnnyHK
W wielu przypadkach chcemy, aby zwracane były najnowsze rekordy (np. Najnowsze aktualizacje / wstawki).
źródło
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:'asc'
lub'ascending'
może być również używany zamiast1
.Aby posortować malejąco, użyj
'desc'
,'descending'
lub-1
w miejsce1
.źródło
Spowoduje to posortowanie kolekcji w porządku malejącym na podstawie daty wstawienia
źródło
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) {});
źródło
toArray
części.To zadziałało dla mnie:
Korzystanie z Node.js, Express.js i Monk
źródło
to działało dla mnie
o którym mowa https://docs.mongodb.org/getting-started/node/query/
źródło
W przypadku mangusty jest to tak proste, jak:
źródło
Aby parametr sortowania działał, wymagany jest dodatkowy nawias kwadratowy [] .
źródło
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:
-----> wynik ------> ISODate ("2012-07-14T08: 14: 00.201Z")
teraz po prostu użyj takiego zapytania:
Otóż to :)
źródło
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 ):
źródło