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

Pola yang Lebih Baik untuk Memfilter Koleksi

Saya merasa sangat terinspirasi untuk menjawab ini karena referensi DotA. :)

Jadi jika saya memahami masalahnya dengan benar, Anda tidak perlu memeriksa setiap kombinasi, melainkan berulang kali menambahkan kunci ke query objek berdasarkan isi dari tiga variabel sesi. Saya pikir berikut ini secara logis setara dengan returnFilterQuery Anda fungsi di atas.

var returnFilterQuery = function() {
  var query = {game: 'dota'};

  var modifyQueryIfArray = function(key, sessionKey) {
    var value = Session.get(sessionKey);
    if (!_.isEmpty(value))
      query[key] = {$in: value};
  };

  modifyQueryIfArray('gamemode', 'dotaMode');
  modifyQueryIfArray('region', 'dotaRegion');
  modifyQueryIfArray('skill', 'dotaSkill');

  return Session.set('dotaFilter', query);
};

Perhatikan bahwa isEmpty mungkin pemeriksaan yang lebih aman daripada length jika variabel sesi bukan array.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb db.collection.find({}) tidak melewati .limit(101)

  2. Masukkan Ke dalam Array objek MongoDB

  3. MongDB tidak dapat menemukan definisi jenis Janji

  4. Gabungkan dua kueri OR dengan AND di Mongoose

  5. Perbarui Dokumen di MongoDB