AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

既存のアプリケーションに Mongoid を追加する

このガイドでは、既存の Sinatra またはRuby on Rails(Rails)アプリケーションに Mongoid を追加する方法を学習できます。 Mongoid を使用する新しいアプリケーションを設定する方法については、次のいずれかのガイドを参照してください。

既存の Sinatraアプリケーションで Mongoid の使用を開始するには、次の手順を実行します。

  1. mongoid の依存関係をアプリケーションの Gemfile に追加します。

  2. クイック スタートガイドの 「バックエンドの構成」 ステップに示されているように、config/mongoid.yml構成ファイルを作成し、接続ターゲットを指定します。

  3. クイック スタートガイドの「アプリケーションの実行」ステップに示されているように、アプリケーションファイルを作成し、構成ファイルをロードします。

  4. データを操作するための Mongoid モデルを作成します。

既存の Railsアプリケーションに Mongoid を追加すると、他の ActiveRecord アダプターと一緒に実行できます。 アダプターの組み合わせを使用するには、mongoid 依存関係を追加し、構成ファイルに接続情報を入力して、アプリケーションでMongoDBの使用を開始します。

既存の RailsアプリケーションをActiveRecord の代わりに Mongoid のみを使用するように調整するには、次のセクションに記載されているように、他の構成変更を行う必要があります。

mongoid gem をアプリケーションの Gemfile に追加する。

Gemfile
gem 'mongoid'

Mongoid Gemfileを唯一のデータベースアダプターとして使用するには、 や など、 にリストされているRDBMSライブラリを削除するか、コメントsqlite pgアウトします。

次に、次のコマンドを実行中て依存関係をインストールします。

bundle install

次のコマンドを実行中て、デフォルトのMongoid 構成を生成します。

bin/rails g mongoid:config

このジェネレーターは、 MongoDBデプロイへの接続を構成するために使用される config/mongoid.yml構成ファイルと、他のオプションを設定するために使用できる config/initializers/mongoid.rb 初期化ファイルを作成します。

config/mongoid.ymlファイルで、接続文字列とその他の接続オプションを指定します。

config/application.rbファイルを開いて、内容を確認します。 ファイルがrequire "rails/all" ステートメントを使用してすべての Rails コンポーネントをロードする場合は、このステートメントを削除します。 次のサンプルconfig/application.rbファイルに示すように、Rails コンポーネントごとに個別の require ステートメントを追加する必要があります。

config/application.rb
# Remove or comment out rails/all
#require "rails/all"
# Add the following instead of rails/all:
require "rails"
# Comment out unneeded frameworks
# require "active_record/railtie" rescue LoadError
# require "active_storage/engine" rescue LoadError
require "action_controller/railtie" rescue LoadError
require "action_view/railtie" rescue LoadError
require "action_mailer/railtie" rescue LoadError
require "active_job/railtie" rescue LoadError
require "action_cable/engine" rescue LoadError
# require "action_mailbox/engine" rescue LoadError
# require "action_text/engine" rescue LoadError
require "rails/test_unit/railtie" rescue LoadError

注意

これらは ActiveRecord に依存しているため、ActionTextActiveStorage、およびActionMailboxアダプターは Mongoid と併用できません。

config/application.rb およびアプリケーションのその他の構成ファイルで、config.active_recordconfig.active_storage への参照を削除するかコメント アウトします。

ActiveRecord の使用から Mongoid に移行するには、アプリケーションの既存のモデルを調整する必要があります。

ActiveRecord モデルは ApplicationRecordクラスから派生しており、列定義がありません。一方、Mongoid モデルには通常スーパークラスはありませんが、Mongoid::Document 属性を含める必要があります。

Mongoid モデルを作成する際は、次の方法でフィールドを定義できます。

例、基本的なアクティブ レコード Post モデルは次のようになります。

app/models/post.rb
class Post < ApplicationRecord
has_many :comments, dependent: :destroy
end

同様の Mongoid Post モデルは次のようになります。

app/models/post.rb
class Post
include Mongoid::Document
field :title, type: String
field :body, type: String
has_many :comments, dependent: :destroy
end

次のコードに示すように、事前定義されたフィールドを使用する代わりに、動的フィールドを使用して Post モデルを定義できます。

app/models/post.rb
class Post
include Mongoid::Document
include Mongoid::Attributes::Dynamic
has_many :comments, dependent: :destroy
end

MongoDBに移動したいデータがリレーショナルデータベースにすでにある場合は、 データ移行 を実行する必要があります。 MongoDBデータを保存するために事前定義されたスキーマは必要ないため、スキーマ移行を実行する必要はありません。

移行ツールは多くの場合、データセットに固有です。 Mongoid は ActiveRecord 関連付けのスーパーセットをサポートしていますが、Mongoid を ActiveRecord と比較すると、モデル参照がコレクションに異なる方法で保存されます。

RDBMSからMongoDBへの移行の詳細については、次のリソースを参照してください。

Mongoid を使用する Rails APIアプリケーションを作成するプロセスは、通常のアプリケーションの作成とほぼ同じです。 唯一の違いは、アプリケーションを作成するには、rails newを実行中中に --api フラグを追加する必要があることです。 Rails APIアプリケーションをMongoid に移行するには、前のセクションで説明されているのと同じ手順に従います。