我正在使用Go的mongoDB驱动程序(https://pkg.go.dev/go.mongodb.org/mongo-driver@v1.8.0/mongo#section-documentation),希望获得部署的mongoDB服务器的版本.

例如,如果是MySQL数据库,我可以做如下操作:

db, err := sql.Open("mysql", DbUser+":"+DbPwd+"@tcp("+Host+")/"+DbName)
if err != nil {
    log.Printf("Error while connecting to DB: %v", err)
}
defer db.Close()

var dbVersion string
if err := db.QueryRow("SELECT VERSION()").Scan(&dbVersion); err != nil {
    dbVersion = "NA"
    log.Printf("Couldnt obtain db version: %w", err)
}
fmt.Println("DB Version: ", dbVersion)

我查阅了文件,但找不到线索.

我还需要获取其他元数据,比如特定数据库的大小等.

任何帮助都将不胜感激.谢谢

推荐答案

MongoDB版本可由running a command人购买,尤其是buildInfo command人.

使用shell,您可以这样做:

db.runCommand({buildInfo: 1})

结果是一个文档,其version属性保存服务器版本,例如:

{
    "version" : "5.0.6",
    ...
}

要使用官方驱动程序运行命令,请使用Database.RunCommand()方法.

例如:

// Connect to MongoDB and acquire a Database:

ctx := context.Background()
opts := options.Client().ApplyURI("mongodb://localhost")
client, err := mongo.Connect(ctx, opts)
if err != nil {
    log.Fatalf("Failed to connect to db: %v", err)
}
defer client.Disconnect(ctx)

db := client.Database("your-db-name")

// And now run the buildInfo command:

buildInfoCmd := bson.D{bson.E{Key: "buildInfo", Value: 1}}
var buildInfoDoc bson.M
if err := db.RunCommand(ctx, buildInfoCmd).Decode(&buildInfoDoc); err != nil {
    log.Printf("Failed to run buildInfo command: %v", err)
    return
}
log.Println("Database version:", buildInfoDoc["version"])

Mongodb相关问答推荐

如何在MongoDB中通过限制和跳过查找项进行匹配

用Spring Boot查询MongoDB中的对象数组

在提供的文档(_Id)之后和之前,是否有一个Mongo操作来获取已排序(和/或过滤)集合中的文档计数?

如何填充Mongoose中的嵌套引用

根据参考图计算子文档列表的最大值

Mongo按最大分组排序

Mongodb,在一个查询中用正则表达式更新部分字符串

如何过滤查找mongodb的结果

$eq 的目的是什么

mongo.lock 文件有什么用?

我怎样才能更快地scrape

如何使用 mongoexport 导出排序数据?

如何使用 -number 后缀对字符串进行 MongoDB 查询排序?

Mongo DB中的Upserting和Id问题

MongoDB:在集合上设置 TTL 索引时出错: sessions

将 JSON 与 MongoDB 一起使用?

有没有办法将python对象直接存储在mongoDB中而不序列化它们

mongoose:按字母顺序排序

MongoDb 聚合 $match 错误:Arguments must be aggregate pipeline operators

对于社交网站(使用 Ruby on Rails 开发)来说,MongoDB 会是一个好主意吗?