IMongoDatabase
不支持在新版本中弃用的db.GetStats();
我想尝试替代方法来获取数据库统计信息。我使用以下代码来运行命令,因为我们可以从shell获取统计信息:
var client = new MongoClient("mongodb://localhost:27017/analytics");
var db = client.GetDatabase("analytics");
var stats = db.RunCommand<BsonDocument>("db.stats()");
var collectionNames = db.RunCommand<BsonDocument>
("db.getCollectionNames()");
我在这里收到以下错误:
JSON读者期待一个值,但找到'db'。
需要帮助才能使用ژ#驱动程序在Mongo数据库上执行命令,如:
db.stats()
db.getCollectionNames()
答案 0 :(得分:4)
您可以使用RunCommand
方法获取db.stats()
个结果:
var command = new CommandDocument {{ "dbStats", 1}, {"scale", 1}};
var result = db.RunCommand<BsonDocument>(command);
结果将如下:
{
"db" : "Test",
"collections" : 7,
"objects" : 32,
"avgObjSize" : 94.0,
"dataSize" : 3008,
"storageSize" : 57344,
"numExtents" : 7,
"indexes" : 5,
"indexSize" : 40880,
"fileSize" : 67108864,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1.0
}
而db.getCollectionNames()
;一种方法是使用此命令:
var command = new CommandDocument { { "listCollections", 1 }, { "scale", 1 } };
var result = db.RunCommand<BsonDocument>(command);
// and to clear extra details
var colNames = result["cursor"]["firstBatch"].AsBsonArray.Values.Select(c => c["name"]);
答案 1 :(得分:0)
您可以通过运行以下代码来获取数据库中的所有集合名称:x包含集合名称。
String connectionString = "mongodb://your_address_here";
var client = new MongoClient(connectionString);
var database = client.GetDatabase("db_name_from_which_you_need_collections");
var cnames = database.ListCollections();
var allNames = cnames.ToList();
foreach(var x in allNames)
{
Console.WriteLine(x.ToString());
}
您可以通过选择x.Values.FirstOrDefault()来进一步获取独立名称.ToString();
答案 2 :(得分:0)
以上两个答案都对我不起作用,但确实如此:
var command = new BsonDocument { { "dbstats", 1 } };
var result = db.RunCommand<BsonDocument>(command);
Debug.WriteLine(result.ToJson());