скажем, я запускаю этот запрос в Mongoose:
Room.find({}, function(err,docs){
}).sort({date:-1});
Это не работает!
Сортировка в Mongoose развивалась по релизам, так что некоторые из этих ответов больше не действительны. Начиная с версии 4.1.x Mongoose сортировка по date
полю по убыванию может выполняться любым из следующих способов:
Room.find({}).sort('-date').exec(function(err, docs) { ... });
Room.find({}).sort({date: -1}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'desc'}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'descending'}).exec(function(err, docs) { ... });
Room.find({}).sort([['date', -1]]).exec(function(err, docs) { ... });
Room.find({}, null, {sort: '-date'}, function(err, docs) { ... });
Room.find({}, null, {sort: {date: -1}}, function(err, docs) { ... });
Для сортировки по возрастанию, опустить -
префикс на строку версии или используйте значение 1
, asc
или ascending
.
Query#find([criteria], [callback])
. Я подумал, что, может быть, было какое-то секретное рукопожатие, в котором говорится, что «критерий» может содержать до трех аргументов, но в нем указан тип «Объект».find
метод в документах. СмModel.find
.Module#property
обозначение и искал#find
. Кажется, нет простого способа навигации или поиска в документах. Поиск находки дает 187 результатов._id
полю. Например, чтобы получить самую последнюю запись, вы можете сделать:await db.collection.findOne().sort({ _id: -1 });
Правильный ответ:
источник
Я имел дело с этой проблемой сегодня, используя Mongoose 3.5 (.2), и ни один из ответов не помог мне решить эту проблему. Следующий фрагмент кода делает свое дело
Вы можете отправить любые стандартные параметры, которые вам нужны
find()
(например, где пункты и возвращаемые поля), но без обратного вызова. Без обратного вызова он возвращает объект Query, с которым вы связываетесьsort()
. Вам нужно позвонитьfind()
снова (с дополнительными параметрами или без них - в целях эффективности они не нужны), что позволит вам получить набор результатов в вашем обратном вызове.источник
Я сделаю это:
Это покажет самые последние вещи в первую очередь.
источник
$orderby
устарела в MongoDB 3.2, поэтому больше не должна использоваться.Должно работать так же
РЕДАКТИРОВАТЬ:
Вы также можете попробовать использовать это, если вы получите ошибку
sort() only takes 1 Argument
:источник
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
Краткое решение:
источник
Посмотрите, поможет ли это> Как сортировать в мангусте?
Также читайте это> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
источник
Вы также можете сортировать по
_id
полю. Например, чтобы получить самую последнюю запись, вы можете сделать,Это гораздо быстрее, потому что я более чем готов поспорить, что ваше
date
поле не проиндексировано.источник
Этот работает для меня.
источник