如何使用Go Mongo-Driver调用db.getUser()获取数据库用户信息
解决Go Mongo-Driver调用getUser命令的问题
你的问题出在两个核心点:
- getUser命令必须在admin数据库执行:MongoDB的用户管理类命令(包括getUser)属于特权命令,只能在
admin数据库下运行,你之前在业务数据库执行自然会报「命令不存在」。 - 命令格式错误:你把
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
相关产品推荐
相关产品推荐

