простой, collection.find (). sort ({datefield: 1}, function (err, cursor) {...}); или вы также можете использовать collection.find (). sort ({datefield: -1}, function (err, cursor) {...});
Что вы собираетесь добавить в функцию? Простая попытка сортировки Dateобъектов без функции у меня не работает в 2.6.3.
Сэм Брайтман
@SamBrightman Эта функция - просто обратный вызов. Что бы вы ни хотели сделать с результатом запроса, вы помещаете эту логику в свой обратный вызов. Вы можете узнать больше о том, что такое обратные вызовы и как они работают, чтобы изучить программирование на основе событий.
Sushant Gupta
Конечно, я знаю, что такое обратный вызов. Я видел только требование сортировки в вопросе, и все ответы содержат обратные вызовы. В то же время сортировка у меня не работала, поэтому я подумал, что, может быть, вам нужно проделать дополнительную работу в функции.
Сэм Брайтман
1
@ SamBrightman О, ладно. Для удобства вы можете быть откровенным и collection.find().sort(...).exec(function(err, cursor) {})
цепочным
5
он говорит, что sort () принимает только 1 аргумент
Джитендра Панчоли
39
Сортировка по дате ничего особенного не требует. Просто отсортируйте по желаемому полю даты коллекции.
Обновлено для нативного драйвера node.js 1.4.28, вы можете сортировать по возрастанию datefieldодним из следующих способов:
@JohnnyHK Sweet. Я не помню точного сценария, но прошлым летом я пытался заставить этот вид работать с фрагментом Sushant, и он просто не работал у меня. Возможно, это потому, что ей не хватало роли toArray.
krikara
На самом деле это неправильный ответ, он дает неверный результат в node.js
С mongoose я не смог использовать toArray и получал ошибку: TypeError: Collection.find(...).sort(...).toArray is not a function.
функция toArray существует в классе Cursor из собственного драйвера MongoDB NodeJS ( ссылка ).
Также sort принимает только один параметр, поэтому вы не можете передавать свою функцию внутри него.
date
столбец: stackoverflow.com/questions/5125521/…Ответы:
Просто небольшая модификация ответа @JohnnyHK
Во многих случаях использования мы хотим, чтобы возвращались последние записи (например, для последних обновлений / вставок).
источник
Date
объектов без функции у меня не работает в 2.6.3.collection.find().sort(...).exec(function(err, cursor) {})
Сортировка по дате ничего особенного не требует. Просто отсортируйте по желаемому полю даты коллекции.
Обновлено для нативного драйвера node.js 1.4.28, вы можете сортировать по возрастанию
datefield
одним из следующих способов:'asc'
или'ascending'
также может использоваться вместо1
.Для сортировки по убыванию, использование
'desc'
,'descending'
или-1
на месте1
.источник
Это отсортирует вашу коллекцию в порядке убывания в зависимости от даты вставки.
источник
Ответы Сушанта Гупты немного устарели и больше не работают.
Следующий фрагмент должен быть таким:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
источник
toArray
.Это сработало для меня:
Использование Node.js, Express.js и Monk
источник
это сработало для меня
указано https://docs.mongodb.org/getting-started/node/query/
источник
С мангустом это очень просто:
источник
Для работы параметра сортировки требуется дополнительная квадратная скобка [] .
источник
если ваш формат даты такой: 14.02.1989 ----> вы можете столкнуться с некоторыми проблемами
вам нужно использовать ISOdate следующим образом:
-----> результат ------> ISODate ("2012-07-14T08: 14: 00.201Z")
теперь просто используйте такой запрос:
Это оно :)
источник
С mongoose я не смог использовать toArray и получал ошибку:
TypeError: Collection.find(...).sort(...).toArray is not a function.
функция toArray существует в классе Cursor из собственного драйвера MongoDB NodeJS ( ссылка ).Также sort принимает только один параметр, поэтому вы не можете передавать свою функцию внутри него.
Это сработало для меня (как ответил Эмиль ):
источник