API Mongoose dường như hỗ trợ sắp xếp trên các trường được phổ biến, nhưng có một lỗi khiến nó bị hỏng hoàn toàn: https://github.com/Automattic/mongoose/issues/2202 . Bạn nhận được một kết quả, nhưng nó hoàn toàn sai.
Đối với một lượng nhỏ dữ liệu, bạn nên sắp xếp mảng kết quả bằng cách sử dụng Javascript Array.prototype.sort () . Hãy nhớ rằng điều này sẽ sửa đổi trực tiếp mảng đã sắp xếp.
Những gì tôi đã làm trong trường hợp này là thêm thuộc tính khóa sắp xếp vào lược đồ cho mô hình bạn muốn sắp xếp. Đối với ví dụ của bạn, bạn có thể làm:
var FollowActionSchema = new Schema({
// ...
'brandSortKey': { type: String },
'brand': {
type: ObjectId,
ref: 'Brand'
},
// ...
});
Điều này không hoàn hảo, vì bạn sẽ phải tự mình đặt thuộc tính này một cách rõ ràng bằng khóa chính xác:
var FollowAction = Model('FollowAction', FollowActionSchema);
var aBrand = // some brand object
var f = new FollowAction({
brand: aBrand._id,
brandSortKey: aBrand.name
// other properties
});
Tuy nhiên, sau đó bạn có thể sắp xếp trực tiếp thông qua API Mongoose (hoặc MongoDB):
FollowAction.find({})
.sort({ brandSortKey:1 })
.exec(function (err, sortedResults) {
// do something with sorted results.
});