55 votes

Comment obtenir la base de données Mongo spécifiée dans la chaîne de connexion en C #

Je voudrais me connecter à la base de données spécifiée dans la chaîne de connexion, sans la spécifier à nouveau dans GetDatabase .

Par exemple, si j'ai une chaîne de connexion comme celle-ci;

 mongodb://localhost/mydb
 

J'aimerais pouvoir db.GetCollection("mycollection") de mydb .

Cela permettrait au nom de la base de données d'être configuré facilement dans le fichier app.config.

59voto

Andrew Orsich Points 24503

Mise à jour:

MongoServer.Create est désormais obsolète (grâce à @ aknuds1). Au lieu de cela, utilisez le code suivant:

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

C'est facile. Vous devez d'abord extraire le nom de la base de données de la chaîne de connexion, puis obtenir la base de données par son nom. Exemple complet:

 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);
 

9voto

aknuds1 Points 9918

Avec la version 1.7 du pilote 10gen officiel, voici l'API actuelle (non obsolète):

 const string uri = "mongodb://localhost/mydb";
var client = new MongoClient(uri);
var db = client.GetServer().GetDatabase(new MongoUrl(uri).DatabaseName);
var collection = db.GetCollection("mycollection");
 

4voto

Christian Horsdal Points 2481

La réponse ci-dessous est apparemment obsolète maintenant, mais fonctionne avec des pilotes plus anciens. Voir les commentaires.

Si vous avez la chaîne de connexion, vous pouvez également utiliser directement MongoDatabase:

 var db =  MongoDatabase.Create(connectionString);
var coll = db.GetCollection("MyCollection");
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X