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

Lepszy wzór do filtrowania kolekcji

Czuję się szczególnie zainspirowany, aby odpowiedzieć na to pytanie ze względu na odniesienie DotA. :)

Więc jeśli dobrze rozumiem problem, nie powinieneś sprawdzać każdej kombinacji, ale raczej wielokrotnie dodawać klucze do query obiekt na podstawie zawartości trzech zmiennych sesji. Myślę, że poniższe jest logicznie równoważne z twoim returnFilterQuery funkcja powyżej.

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

Zauważ, że isEmpty może być bezpieczniejszym sprawdzeniem niż length w przypadku, gdy zmienna sesji nie jest tablicą.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Obsługa rmongodb dla MongoDB 3

  2. błąd TS2688:Nie można znaleźć pliku definicji typu dla „bson”

  3. Wstawianie i sprawdzanie daty za pomocą MongoDB i Nodejs

  4. MongoDB wybierz i połącz pola

  5. pobieranie InvalidOperationException podczas wykonywania zapytań za pomocą AsQueryable w C#