sql >> データベース >  >> NoSQL >> MongoDB

コレクションをフィルタリングするためのより良いパターン

    DotAのリファレンスがあるので、これに答えるのに特に刺激を受けています。 :)

    したがって、問題を正しく理解していれば、すべての組み合わせをチェックする必要はなく、queryにキーを繰り返し追加する必要があります。 3つのセッション変数の内容に基づくオブジェクト。以下は、returnFilterQueryと論理的に同等だと思います。 上記の機能。

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

    isEmptyに注意してください lengthよりも安全なチェックかもしれません セッション変数が配列でない場合。




    1. MongoDBシェル:名前または正規表現に一致するコレクションを検索する方法

    2. マングースの地理空間検索:距離が機能しない

    3. 要素の位置に基づいてmongoDBの配列要素を削除する

    4. マングースのネストされたスキーマとネストされたモデル