Zdá se, že rozhraní Mongoose API podporuje řazení na obsazených polích, ale je tu chyba, která jej zcela porušuje: https://github.com/Automattic/mongoose/issues/2202 . Dostanete výsledek, ale je to prostě špatně.
Pro malé množství dat je v pořádku třídit pole výsledků pomocí Javascriptu Array.prototype.sort() . Mějte však na paměti, že to přímo upravuje seřazené pole.
V tomto případě jsem přidal vlastnost klíče řazení do schématu pro model, který chcete seřadit. Pro váš příklad můžete udělat:
var FollowActionSchema = new Schema({
// ...
'brandSortKey': { type: String },
'brand': {
type: ObjectId,
ref: 'Brand'
},
// ...
});
To není dokonalé, protože tuto vlastnost budete muset explicitně nastavit pomocí správného klíče sami:
var FollowAction = Model('FollowAction', FollowActionSchema);
var aBrand = // some brand object
var f = new FollowAction({
brand: aBrand._id,
brandSortKey: aBrand.name
// other properties
});
Ale pak můžete třídit přímo přes Mongoose API (nebo MongoDB):
FollowAction.find({})
.sort({ brandSortKey:1 })
.exec(function (err, sortedResults) {
// do something with sorted results.
});