MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Melhor padrão para filtrar coleções


Estou me sentindo particularmente inspirado para responder isso por causa da referência DotA. :)

Portanto, se eu entendi o problema corretamente, você não precisará verificar todas as combinações, mas adicionar chaves repetidamente à query objeto baseado no conteúdo de três variáveis ​​de sessão. Acho que o seguinte é logicamente equivalente ao seu returnFilterQuery função acima.
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);
};

Observe que isEmpty pode ser uma verificação mais segura do que length caso a variável de sessão não seja um array.