private void FillDatabaseStatistics(IDictionary<string, object> status)
{
IDictionary<string, IDictionary<string, object>> dbStats = new Dictionary<string, IDictionary<string, object>>();
status.Add("dbStats", dbStats);
foreach (string dbName in _mongoServer.GetDatabaseNames())
{
if (dbName == "config" || dbName == "local" || dbName == "admin" || dbName == "test")
{
// Ignore these database names.
continue;
}
MongoDatabase database = _mongoServer[dbName];
CommandResult result = database.RunCommand("dbstats");
BsonDocument dbStatsOutput = (BsonDocument)result.Response;
MongoCollection collection = database["system.namespaces"];
dbStats.Add(dbName, new Dictionary<string, object>());
foreach (BsonElement element in dbStatsOutput.Elements)
{
dbStats[dbName].Add(element.Name, element.Value);
}
try
{
long namespaces = collection.Count();
dbStats[dbName].Add("namespaces", namespaces);
}
catch (MongoCommandException)
{
dbStats[dbName].Add("namespaces", "");
}
}
}