В Mongoose, как мне сортировать по дате? (node.js) - программирование
Подтвердить что ты не робот

В Mongoose, как мне сортировать по дате? (node.js)

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

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

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

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

4b9b3361

Ответ 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.

Ответ 2

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

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

});

Ответ 3

Сегодня мы столкнулись с этой проблемой, используя Mongoose 3.5 (.2), ​​и ни один из ответов не помог мне решить эту проблему. Следующий фрагмент кода делает трюк
Post.find().sort('-posted').find(function (err, posts) {
    // user posts array
});

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

Ответ 4

Я делаю это:

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

Это покажет самые последние вещи.

Ответ 5

Post.find().sort({date:-1}, function(err, posts){
});

Должен работать и

Ответ 7

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

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

Room.find(query, projection, options).exec(function(err, docs) { ... });