Mongoose API ser ud til at understøtte sortering på udfyldte felter, men der er en fejl, der bryder det fuldstændigt: https://github.com/Automattic/mongoose/issues/2202 . Du får et resultat, men det er simpelthen forkert.
For små mængder data er det fint at sortere resultatarrayet ved hjælp af Javascript Array.prototype.sort() . Husk, at dette ændrer det sorterede array direkte.
Det, jeg har gjort i dette tilfælde, er at tilføje en sorteringsnøgleegenskab til skemaet for den model, du vil sortere. Som dit eksempel kan du gøre:
var FollowActionSchema = new Schema({
// ...
'brandSortKey': { type: String },
'brand': {
type: ObjectId,
ref: 'Brand'
},
// ...
});
Dette er ikke perfekt, for du skal selv udtrykkeligt indstille denne egenskab med den korrekte nøgle:
var FollowAction = Model('FollowAction', FollowActionSchema);
var aBrand = // some brand object
var f = new FollowAction({
brand: aBrand._id,
brandSortKey: aBrand.name
// other properties
});
Men så kan du sortere direkte via Mongoose API (eller MongoDB):
FollowAction.find({})
.sort({ brandSortKey:1 })
.exec(function (err, sortedResults) {
// do something with sorted results.
});