Mongoose API verkar stödja sortering på fyllda fält, men det finns en bugg som bryter det helt: https://github.com/Automattic/mongoose/issues/2202 . Du får ett resultat, men det är helt enkelt fel.
För små mängder data går det bra att sortera resultatmatrisen med Javascript Array.prototype.sort() . Tänk på att detta direkt modifierar den sorterade arrayen.
Vad jag har gjort i det här fallet är att lägga till en sortsnyckelegenskap till schemat för modellen du vill sortera. Som ditt exempel kan du göra:
var FollowActionSchema = new Schema({
// ...
'brandSortKey': { type: String },
'brand': {
type: ObjectId,
ref: 'Brand'
},
// ...
});
Det här är inte perfekt, eftersom du måste explicit ställa in den här egenskapen med rätt nyckel själv:
var FollowAction = Model('FollowAction', FollowActionSchema);
var aBrand = // some brand object
var f = new FollowAction({
brand: aBrand._id,
brandSortKey: aBrand.name
// other properties
});
Men då kan du sortera direkt via Mongoose API (eller MongoDB):
FollowAction.find({})
.sort({ brandSortKey:1 })
.exec(function (err, sortedResults) {
// do something with sorted results.
});