Overview
このガイドでは、接続string とMongo::Client {0 オブジェクトを使用して、さまざまなタイプのMongoDB 配置に接続する方法を説明します。
Atlas
MongoDBAtlas上の 配置に接続するには、 接続string に次の要素を含めます。
Atlas クラスターの URL
MongoDB ユーザー名
MongoDB パスワード
次に、接続stringを Mongo::Client コンストラクターに渡します。
Tip
接続 Atlasを取得するには、 ドライバー接続ガイドstring に従ってください。
Atlas に接続するときは、Atlas がMongoDB Serverの新しいバージョンにアップグレードするときに重大な変更を回避するために、 Stable APIクライアントオプションを使用することをお勧めします。Stable API機能について詳しくは、Stable APIで接続ガイドをご覧ください。
次のコードは、 Rubyドライバーを使用して Atlas クラスターに接続する方法を示しています。このコードでは、Stable APIバージョンを指定するために server_apiフィールドも使用されます。
require 'mongo' # Replace the placeholders with your credentials uri = "<connection string>" # Sets the server_api field of the options object to Stable API version 1 options = { server_api: { version: '1' } } # Creates a new client and connect to the server client = Mongo::Client.new(uri, options) # Sends a ping to confirm a successful connection begin admin_client = client.use('admin') result = admin_client.database.command(ping: 1).documents.first puts "Pinged your deployment. You successfully connected to MongoDB!" rescue Mongo::Error::OperationFailure => ex puts ex ensure client.close end
ローカル配置
MongoDBデプロイ のスタンドアロンスタンドアロン配置 に接続するには、サーバーのホストを指定します。必要に応じて、接続するサーバーとデータベースのポートを指定します。ポートが指定されていない場合、デフォルトのポートは 27017 です。データベース名が指定されていない場合、クライアントはadminデータベースを使用します。
Mongo::Client.new([ 'host1:27017' ], database: 'mydb')
接続文字列を使用して、接続するホスト、ポート、およびデータベースを指定することもできます。
Mongo::Client.new("mongodb://host1:27017/mydb")
ホストを localhost として指定することもできます。次のコード例では、デフォルトのポート 27017 上の localhost に接続します。
client = Mongo::Client.new(["localhost"])
レプリカセット
レプリカセットに接続するには、レプリカセットの一部であるすべてのノードを指定することをお勧めします。1 つ以上のノードが使用できなくなったイベント、すべてのノードを指定することで、使用可能なノードが1 つである限り、ドライバーはレプリカセットに接続し続けることができます。
ただし、レプリカセット内の任意の 1 つのノードのアドレスをドライバーに渡すには十分です。ノードはプライマリ である必要はなく、 非表示のノードでもかまいません。その後、ドライバーは残りのノードを自動的に検出します。
次の例では、レプリカセットの 3 つのノードを指定する方法を示しています。
Mongo::Client.new([ 'host1:27017', 'host2:27018', `host3:21019` ], database: 'mydb')
次の例は、接続文字列を使用してレプリカセットに接続する方法を示しています。
Mongo::Client.new("mongodb://host1:27017,host2:27018,host3:27019/mydb")
次の例は、replica_set オプションまたは replicaSet接続文字列オプションを使用して、接続時にレプリカセット名を確認する方法を示しています。
Mongo::Client.new([ 'host1:27017', 'host2:27018', 'host3:27019' ], database: 'mydb', replica_set: 'myapp') # Or by using a connection string: Mongo::Client.new("mongodb://host1:27017,host2:27018,host3:27019/mydb?replicaSet=myapp")
注意
Docker のレプリカセット
レプリカセットがDockerで実行される場合、公開されるMongoDBエンドポイントは 1 つだけです。この場合、レプリカセットは検出できません。接続 URI で directConnection=false を指定するか、このオプションを未設定のままにすると、アプリケーションがその接続に接続できなくなる可能性があります。
テスト環境または開発環境では、directConnection=true を指定してレプリカセットに接続できます。本番環境では、Docker 仮想ネットワークの外部から各 MongoDB インスタンスにアクセスできるようにクラスターを構成することを推奨します。
DNS サービス検出
DNS サービス検出を使用して接続しているサービスの DNS SRVレコードを検索するには、接続文字列で SRV 接続形式を指定します。 この形式を指定すると、 Rubyドライバーは新しいホストを自動的に再スキャンします。配置により、クライアント構成を変更しなくても、トポロジーにホストを追加できます。
次のコードは、 SRV 接続形式を使用する接続文字列を示しています。
uri = "mongodb+srv://<hostname>/"
SRV 接続形式の詳細については、 MongoDB Serverマニュアルの「 SRV 接続形式 」のエントリを参照してください。
API ドキュメント
Rubyドライバーを使用して Mongo::Clientオブジェクトを作成する方法について詳しくは、 Mongo::Client のAPIドキュメントを参照してください。