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

mongoid / mongodbを使用した、データモデルの抽出、モデリング、変更

    あなたは2つのことをします:

    • アプリケーションでフィルタリングする代わりに、dbクエリでユーザーをフィルタリングします
    • ユーザーオブジェクト全体ではなく、dbから必要なフィールドのみをフェッチします(ユーザーに他のものがあると仮定しますが、簡潔にするためにここでは省略しました)

      Competitor = Struct.new(:html_url, :description, :user)
      competitors = []
      User.where('watchlists.tags_array' => %w[ruby web framework]).
          only(:nickname, :watchlists).each do |u|
        u.watchlists.where(:tags_array => %w[ruby web framework]).each do |wl|
          competitors << Competitor.new(wl.html_url, wl.description, u.nickname)
        end
      end
      

    PS:おそらくmapは使いたくないでしょう User.allで 、大量のユーザードキュメントがある場合は、大量のメモリが必要になります。また、マップされたユーザーを使用していませんが、代わりにcompetitorsで結果を収集しています 自分で配列するので、each 正常に動作するはずです。




    1. データ集約型アプリケーションでのJava+RedisとプレーンJavaの効率?

    2. java、Redis、Elastic Search、Mongoによるオートコンプリート

    3. 既存のコレクションに新しいバリデーターを追加する

    4. jenssegers/laravel-mongodbの複数のDB接続を使用したLaravelの外部での雄弁