В Mongoose, как сортировать по дате? (Node.js) - PullRequest
135 голосов
/ 29 апреля 2011

допустим, я запускаю этот запрос в Mongoose:

Room.find({}, function(err,docs){

}).sort({date:-1}); 

Это не работает!

Ответы [ 7 ]

374 голосов
/ 26 февраля 2013

Сортировка в 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.

52 голосов
/ 29 апреля 2011

Правильный ответ:

Blah.find({}).sort({date: -1}).execFind(function(err,docs){

});
12 голосов
/ 28 декабря 2012

Мы занимались этим вопросом сегодня, используя Mongoose 3.5 (.2), ​​и ни один из ответов не помог мне решить эту проблему. Следующий фрагмент кода делает трюк

Post.find().sort('-posted').find(function (err, posts) {
    // user posts array
});

Вы можете отправить любые стандартные параметры, которые вам нужны, на find() (например, где пункты и возвращаемые поля), но нет обратного вызова. Без обратного вызова он возвращает объект Query, с которым вы связываете sort(). Вам нужно снова вызвать find() (с дополнительными параметрами или без них - по соображениям эффективности их не нужно), что позволит вам получить набор результатов в вашем обратном вызове.

4 голосов
/ 06 февраля 2015

Я делаю это:

Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) {
    ...
})

Это покажет самые последние вещи в первую очередь.

4 голосов
/ 26 февраля 2013
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
});
1 голос
/ 05 октября 2017

Краткое решение:

const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }

Room.find(query, projection, options).exec(function(err, docs) { ... });
1 голос
/ 29 апреля 2011

Посмотрите, поможет ли это> Как сортировать в мангусте?

Также прочтите это> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...