2016-07-27 3 views
0

У меня есть подключение к монго и выполнение команд. Я использую следующий код. Я хочу проверить погоду, которую я связываю, перечисляя базы данных.Подключение к маршрутизатору запросов (mongos) из баз данных C# и списков

MongoClient client = new MongoClient("mongodb://127.0.0.1:27017"); 
client.ListDatabases(); 

Если я отлаживаю и нажимаю на вторую строку, я не вижу названия баз данных. Как я могу напечатать имена баз данных на экране, чтобы подтвердить, что я подключен к монго.

+0

https://docs.mongodb.com/getting-started/csharp/client/ I поставит точку останова на client.ListDatabases(); затем наведите курсор, используя intellisense, чтобы проверить, из чего состоит клиент. Может даже сделать quickwatch – FirebladeDan

+1

Возможный дубликат [MongoDB: Получение списка всех баз данных?] (Http://stackoverflow.com/questions/6105678/mongodb-getting-the-list-of-all-databases) – FrankerZ

+0

Да, что это то, что я сделал, но я не вижу никаких имен базы данных, которые я создал – user2307236

ответ

0

Необходимо указать учетные данные в строке соединения. Пара способов, вы можете сделать это:

var connectionString = "mongodb://user1:[email protected]:27017"; 

ли формат ожидалось, вы должны будете предоставить имя пользователя и пароль самостоятельно, это просто заполнители.

Или вы можете создать MongoCredentials объект и использовать его вместо строки подключения (возможно, немного чище этот путь, и позволяет использовать более сложную конфигурацию, если смотреть глубже в документации объекта)

var credential = MongoCredential.CreateMongoCRCredential("test", "user1", "password1"); 

var settings = new MongoClientSettings 
{ 
    Credentials = new[] { credential } 
}; 

var mongoClient = new MongoClient(settings); 

Оба эти примеры приведены на MongoDB's documentation site

+0

Я не создавал никаких учетных данных, поэтому мне не нужно было передавать какие-либо учетные данные в строку подключения – user2307236

0

Попробуйте метод GetDatabaseNames(), а также присвойте результат переменной. Так что вы можете проверить его на контрольной точке, как

MongoClient client = new MongoClient("mongodb://127.0.0.1:27017/"); 
var databaseNames = client.GetDatabaseNames(); 
+0

Да, извините, удалил мой комментарий, но последний пакет NuGet для MongoDb doesn ' t имеет ссылку на GetDatabaseNames(), но не смог быстро найти документ, показывающий, что он устарел. –

+0

@MattDearing, нет, он не устарел вообще и все еще там, но более новая версия драйвера может и не иметь. См. Здесь http://api.mongodb.com/csharp/1.1/html/dd019888-5d24-5686-0cb8-3d046cee6acc.htm – Rahul

+0

в порядке с 1.1 он был там, по крайней мере, 2.2 это не: http: //api.mongodb.com/csharp/2.2/html/T_MongoDB_Driver_MongoClient.htm –

0

ListDatabases возвращает IAsyncCursor так попробуйте следующее:

var client = new MongoClient(<CONNECTION STRING>); 
var cursor = client.ListDatabases(); 
cursor.ForEachAsync(db => Console.WriteLine(((BsonString)db["name"]).Value)); 
Смежные вопросы