API на Mongoose изглежда поддържа сортиране на попълнени полета, но има грешка, която го нарушава изцяло: https://github.com/Automattic/mongoose/issues/2202 . Получавате резултат, но той е просто грешен.
За малки количества данни е добре да сортирате резултатния масив с помощта на Javascript Array.prototype.sort() . Имайте предвид обаче, че това директно променя сортирания масив.
Това, което направих в този случай, е да добавя свойство на ключ за сортиране към схемата за модела, който искате да сортирате. За вашия пример можете да направите:
var FollowActionSchema = new Schema({
// ...
'brandSortKey': { type: String },
'brand': {
type: ObjectId,
ref: 'Brand'
},
// ...
});
Това не е перфектно, защото ще трябва сами изрично да зададете това свойство с правилния ключ:
var FollowAction = Model('FollowAction', FollowActionSchema);
var aBrand = // some brand object
var f = new FollowAction({
brand: aBrand._id,
brandSortKey: aBrand.name
// other properties
});
Но след това можете да сортирате директно чрез Mongoose API (или MongoDB):
FollowAction.find({})
.sort({ brandSortKey:1 })
.exec(function (err, sortedResults) {
// do something with sorted results.
});