Ответы:
Сортировка в 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
.
find
метод в документах. См Model.find
.
Module#property
обозначение и искал #find
. Кажется, нет простого способа навигации или поиска в документах. Поиск находки дает 187 результатов.
_id
полю. Например, чтобы получить самую последнюю запись, вы можете сделать:await db.collection.findOne().sort({ _id: -1 });
Правильный ответ:
Blah.find({}).sort({date: -1}).execFind(function(err,docs){
});
Я имел дело с этой проблемой сегодня, используя Mongoose 3.5 (.2), и ни один из ответов не помог мне решить эту проблему. Следующий фрагмент кода делает свое дело
Post.find().sort('-posted').find(function (err, posts) {
// user posts array
});
Вы можете отправить любые стандартные параметры, которые вам нужны find()
(например, где пункты и возвращаемые поля), но без обратного вызова. Без обратного вызова он возвращает объект Query, с которым вы связываетесь sort()
. Вам нужно позвонить find()
снова (с дополнительными параметрами или без них - в целях эффективности они не нужны), что позволит вам получить набор результатов в вашем обратном вызове.
Post.find().sort({date:-1}, function(err, posts){
});
Должно работать так же
РЕДАКТИРОВАТЬ:
Вы также можете попробовать использовать это, если вы получите ошибку sort() only takes 1 Argument
:
Post.find({}, {
'_id': 0, // select keys to return here
}, {sort: '-date'}, function(err, posts) {
// use it here
});
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
Краткое решение:
const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }
Room.find(query, projection, options).exec(function(err, docs) { ... });
Посмотрите, поможет ли это> Как сортировать в мангусте?
Также читайте это> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
Этот работает для меня.
`Post.find().sort({postedon: -1}).find(function (err, sortedposts){
if (err)
return res.status(500).send({ message: "No Posts." });
res.status(200).send({sortedposts : sortedposts});
});`
Query#find([criteria], [callback])
. Я подумал, что, может быть, было какое-то секретное рукопожатие, в котором говорится, что «критерий» может содержать до трех аргументов, но в нем указан тип «Объект».