MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose сортиране по населено поле

API на Mongoose изглежда поддържа сортиране на попълнени полета, но има грешка, която го нарушава изцяло: 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.
   });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Умножете полето по стойност в Mongodb

  2. Как да инсталирам по-ранна версия на mongodb с homebrew?

  3. Не може да се свърже с MongoDB сървър на Google Compute Engine от второ копие на виртуална машина

  4. Mongo C# JSON четецът очакваше стойност, но намери „replSetGetStatus“

  5. Как мога да се справя с пресичането на масиви в find({})?