MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Urutkan luwak berdasarkan bidang yang dihuni

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mendapatkan agregasi yang berbeda dari bidang array di seluruh indeks

  2. Dua permintaan bersamaan bercampur di aplikasi Node.js

  3. Merujuk skema lain di Mongoose

  4. Perbarui elemen array di mongo

  5. Gabungkan teks lengkap dengan indeks lainnya