MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongoose sortuj według wypełnionego pola

Wygląda na to, że interfejs Mongoose API obsługuje sortowanie według wypełnionych pól, ale jest błąd, który całkowicie je łamie: https://github.com/Automattic/mongoose/issues/2202 . Otrzymasz wynik, ale jest po prostu zły.

W przypadku niewielkich ilości danych można posortować tablicę wyników za pomocą JavaScript Tablica.prototyp.sort() . Pamiętaj jednak, że to bezpośrednio modyfikuje posortowaną tablicę.

To, co zrobiłem w tym przypadku, to dodanie właściwości klucza sortowania do schematu modelu, który chcesz posortować. Na przykład możesz zrobić:

var FollowActionSchema = new Schema({
  // ...
  'brandSortKey': { type: String },
  'brand': {
    type: ObjectId,
    ref: 'Brand'
  },
  // ...
});

To nie jest idealne, ponieważ musisz samodzielnie ustawić tę właściwość z poprawnym kluczem:

var FollowAction = Model('FollowAction', FollowActionSchema);

var aBrand = // some brand object

var f = new FollowAction({
   brand: aBrand._id,
   brandSortKey: aBrand.name
   // other properties
}); 

Ale wtedy możesz sortować bezpośrednio przez Mongoose API (lub 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. Atrybuty wielojęzyczne w MongoDB

  2. Import/eksport MongoDB za pomocą Node.js

  3. Wielowymiarowa projekcja tablicy MongoDB

  4. Mongoose wygasa dane, ale zachowaj w bazie danych

  5. Używanie cloneCollection w MongoDB:jak uwierzytelnić?