MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongoose sắp xếp theo trường phổ biến

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.
   });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trên cùng một máy chủ bằng PyMongo?

  2. Làm cách nào để xuất dữ liệu mongoDB sang định dạng CSV?

  3. Kết nối laravel jenssegers với cụm tập bản đồ mongodb

  4. MongoDb - Làm cách nào để cập nhật nhiều phần tử của một đối tượng lồng nhau bằng cách sử dụng $ set?

  5. Liệt kê tin nhắn cuối cùng của mỗi cuộc trò chuyện, liên quan đến người dùng, trong MongoDB