Mongoose APIは、入力されたフィールドでの並べ替えをサポートしているようですが、それを完全に壊すバグがあります: 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.
});