You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Go Mongo-Driver调用db.getUser()获取数据库用户信息

解决Go Mongo-Driver调用getUser命令的问题

你的问题出在两个核心点:

  1. getUser命令必须在admin数据库执行:MongoDB的用户管理类命令(包括getUser)属于特权命令,只能在admin数据库下运行,你之前在业务数据库执行自然会报「命令不存在」。
  2. 命令格式错误:你把getUser设为1是错误写法,正确的格式是把用户名直接作为getUser的对应值。

如果要获取指定数据库的用户信息,正确代码示例如下:

var userInfo bson.M
// 必须切换到admin数据库执行该命令
command := bson.D{
    {"getUser", "testuser"},  // 指定要查询的用户名
    {"db", "your-target-db"}, // 指定用户所属的业务数据库,查询admin用户可省略此参数
}
err := clientInfo.Database("admin").RunCommand(context.TODO(), command).Decode(&userInfo)
if err != nil {
    // 处理错误:用户不存在时会返回错误码11的CommandError,对应Shell里的null结果
    if cmdErr, ok := err.(mongo.CommandError); ok && cmdErr.Code == 11 {
        fmt.Println("用户不存在")
    } else {
        log.Fatal(err)
    }
}
// 输出查询到的用户信息
fmt.Printf("%+v\n", userInfo)

补充说明:

  • 若查询的是admin数据库的用户,直接去掉{"db", "your-target-db"}这一行即可
  • MongoDB驱动不会像Shell那样返回null,用户不存在时会抛出带有特定错误码的异常,需要通过错误类型和错误码判断

内容的提问来源于stack exchange,提问作者Gopher_k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:56:14