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

同じRubyRailsプロジェクトでMongoMapperとActiveRecordを構成する方法

    あなたのmongo_mappergemをあなたのGemfileに含めてください。次に、MongoMapperへの移行をゆっくりと開始したいモデルで、これをモデルに含めるだけです。

    include MongoMapper::Document
    

    これがMongoパブリッシャーモデルの例です

    class Publisher
      include MongoMapper::Document
    
      key :_id, String
      key :mtd_uniques, Integer
      key :mtd_demo_uniques, Integer
      key :archive, Array
      key :ignore, Boolean
    end
    

    私のユーザーモデル(postgres):

    class User < ActiveRecord::Base
      validates_presence_of :first_name, :last_name, :email, :type
      acts_as_authentic
    
      def self.inherited(child)
        child.instance_eval do
          def model_name
            User.model_name
          end
        end
        super
      end
    end
    

    これの良いところは、他のすべてのモデルが引き続きActiveRecordを使用しているため、すべてがMongoに移行されるまで、2つの異なるデータベースを使用できることです。これは私が使用しているものの例です。 MongoMapperを使用した大規模なデータ集約、およびpostgres(Herokuでホストされているアプリ)を使用したユーザーモデル

    私のセットアップでは、config.ymlにconfigのものをダンプしました

    development:
      adapter: MongoDB
      host: localhost
      database: my-dev-db
    
    test:
      adapter: MongoDB
      host: localhost
      database: my-dev-db
    
    staging:
      adapter: MongoDB
      host: remote-host (for me amazon ec2)
      database: my-staging-db
    
    production:
      adapter: MongoDB
      host: remote-host (for me amazon ec2)
      database: my-production-db
    

    2つのDBを区別するイニシャライザを作成しました:

    /initializers/database.rb

    # load YAML and connect
    database_yaml = YAML::load(File.read("#{Rails.root}/config/config.yml"))
    puts "Initializing mongodb"
    if database_yaml[Rails.env] && database_yaml[Rails.env]['adapter'] == 'MongoDB'
      mongo_database = database_yaml[Rails.env]
      MongoMapper.connection = Mongo::Connection.new(mongo_database['host'], 27017, :pool_size => 5, :timeout => 5)
      MongoMapper.database =  mongo_database['database']
    end
    


    1. HTMLを使用したMongoDBドキュメントの表示

    2. mongodbの増分バックアップを実行したい。ジャーナリング? Oplog?

    3. コレクション内のMongoDB検索

    4. Mini MongoのGUI表現を取得する方法はありますか?