本文介绍了C# Mongo 驱动程序 IMongoDatabase RunCommand 获取数据库统计信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

IMongoDatabase 不支持 db.GetStats(); 新版本已弃用.
我想尝试替代方法来获取数据库统计信息.我使用以下代码运行命令,因为我们可以从 shell 获取统计信息:

IMongoDatabase does not support db.GetStats(); which is deprecated in new version.
I want to try alternate approach to get database stats. I use the following code to run command as we can get the stats from 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()");

我在这里遇到以下错误:

I am getting following error here:

JSON 读取器期待一个值,但找到了 'db'.

需要帮助使用 ژ# 驱动程序在 Mongo 数据库上执行命令,例如:

Need help to execute the command on Mongo database using ژ# driver, like:

  • db.stats()
  • db.getCollectionNames()

推荐答案

您可以使用 RunCommand 方法获得 db.stats() 结果如下:

You can use RunCommand method to get db.stats() results like this:

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();一种方法是使用这个命令:


And for db.getCollectionNames(); a way is to use this command:

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

这篇关于C# Mongo 驱动程序 IMongoDatabase RunCommand 获取数据库统计信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-31 06:18