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 インスタンスにアクセスできるようにクラスターを構成することを推奨します。
API ドキュメント
Mongo::Client
Rubyドライバーを使用して オブジェクトを作成する方法について詳しくは、 Mongo ::Client のAPIドキュメントを参照してください。