API Mongoose tampaknya mendukung penyortiran pada bidang yang terisi, tetapi ada bug yang merusaknya sepenuhnya: https://github.com/Automattic/mongoose/issues/2202 . Anda mendapatkan hasil, tapi itu benar-benar salah.
Untuk sejumlah kecil data, tidak masalah untuk mengurutkan larik hasil menggunakan Javascript Array.prototype.sort() . Perlu diingat bahwa ini secara langsung memodifikasi array yang diurutkan.
Apa yang saya lakukan dalam kasus ini adalah menambahkan properti kunci sortir ke skema untuk model yang ingin Anda urutkan. Sebagai contoh, Anda dapat melakukan:
var FollowActionSchema = new Schema({
// ...
'brandSortKey': { type: String },
'brand': {
type: ObjectId,
ref: 'Brand'
},
// ...
});
Ini tidak sempurna, karena Anda sendiri harus menyetel properti ini secara eksplisit dengan kunci yang benar:
var FollowAction = Model('FollowAction', FollowActionSchema);
var aBrand = // some brand object
var f = new FollowAction({
brand: aBrand._id,
brandSortKey: aBrand.name
// other properties
});
Tapi, kemudian Anda dapat mengurutkan langsung melalui API Mongoose (atau MongoDB):
FollowAction.find({})
.sort({ brandSortKey:1 })
.exec(function (err, sortedResults) {
// do something with sorted results.
});