1. ホーム
  2. c#

C# で接続文字列で指定した Mongo データベースを取得する方法

2023-08-06 02:22:43

質問

で再指定せずに、接続文字列で指定したデータベースに接続したいのですが。 GetDatabase .

例えば、こんな接続文字列があったとします。

mongodb://localhost/mydb

をできるようにしたい。 db.GetCollection("mycollection") から mydb .

これにより、app.configファイルでデータベース名を簡単に設定することができるようになります。

どのように解決するのですか?

更新しました。

MongoServer.Create は廃止されました (@aknuds1 に感謝します)。代わりに以下のコードを使ってください。

var _server = new MongoClient(connectionString).GetServer();


簡単です。まず、接続文字列からデータベース名を取得し、次にデータベース名でデータベースを取得する必要があります。完全な例です。

var connectionString = "mongodb://localhost:27020/mydb";

//take database name from connection string
var _databaseName = MongoUrl.Create(connectionString).DatabaseName;
var _server = MongoServer.Create(connectionString);

//and then get database by database name:
_server.GetDatabase(_databaseName);

重要 : データベースと認証データベースが異なる場合、authSource=クエリパラメータを追加して、異なる認証データベースを指定することができます。(この件に関しては クリス・ドロビソン )

docsから。

<ブロッククオート

注:データベースセグメントを最初に使用するデータベースとして使用する場合。 しかし、指定されたユーザー名とパスワードは別のデータベースで定義されています。 を使用する場合、authSource オプションを使用して、クレデンシャルが定義されているデータベースを指定することができます。 データベースを指定します。たとえば は、userDb に対してクレデンシャルを認証します。 を指定すると、db1 ではなく userDb データベースに対して 認証を行います。