Ответ 1
Этот пример выше работает с Mongoose 2.x, с Mongoose 3.x, используйте этот синтаксис:
Group
.find({})
.populate('Members', '_id name', null, { sort: { 'created_at': -1 } })
Я хотел бы отсортировать заполненный документ из коллекции я fetch, я получаю сообщение об ошибке.
Допустим документ Group
(группа) и 'Member' (Group.Members)
Group
.find({})
.populate('Members')
Работает отлично, но я бы хотел сортировать его, поэтому я делаю это:
Group
.find({})
.populate('Members', ['_id', 'name'], null, { sort: [[ 'created_at', 'desc' ]] })
Я получаю ошибку TypeError: Invalid select() argument. Must be a string or object.
, добавляя это...
Этот пример выше работает с Mongoose 2.x, с Mongoose 3.x, используйте этот синтаксис:
Group
.find({})
.populate('Members', '_id name', null, { sort: { 'created_at': -1 } })
Вы также можете неявно указать только необходимые параметры заполнения:
Group
.find({})
.populate({path: 'Members', options: { sort: { 'created_at': -1 } } })
Посмотрите http://mongoosejs.com/docs/api.html#document_Document-populate
И для Mongoose 4.x используйте этот синтаксис:
Kitten.find().populate({
path: 'owner'
, select: 'name'
, match: { color: 'black' }
, options: { sort: { name: -1 }}
}).exec(function (err, kittens) {
console.log(kittens[0].owner.name) // Zoopa
})
// alternatively
Kitten.find().populate('owner', 'name', null, {sort: { name: -1 }}).exec(function (err, kittens) {
console.log(kittens[0].owner.name) // Zoopa
})
Ссылка: Mongoose docs
Это работало правильно для меня в Mongoose Версии 5 и выше.
Clinics.findById(req.params.id).populate({path:'users',options:{ sort:{date : 1}}}).exec(callback);
В Mongoose v5.0.5 у меня работает следующее:
Schedule.find({})
.populate({path: 'eventComments', options: {sort:{"commentDate": "descending"}}})
.exec(function(err, result) {
if (err) {
throw err
}
else {
return res.json(result);
}
});
Этот код работал для меня и может помочь вам
Group.find({}).populate('Members').sort({ created_at: -1 })