[英]Run command in MongoDB with go driver
我尝试运行createUser
命令。 我认为问题在于字段的顺序起着重要作用。 该命令完全像这样工作。 但突然我收到以下错误:
panic: (CommandNotFound) no such command: 'pwd', bad cmd: '{ pwd: "Test123!", roles: [ { role: "readWrite", db: "test" } ], createUser: "test" }'
因此,在不更改任何内容的情况下,function 有时会起作用,有时却不起作用。 以下 function 创建用户:
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"os"
"solvitaInit/kube"
"time"
)
func createUser(client *mongo.Client, userName string, pass string, dbName string, roleName string, roldeDB string) error {
r := client.Database(dbName).RunCommand(context.Background(),bson.M{"createUser": userName, "pwd": pass,
"roles": []bson.M{{"role": roleName,"db":roldeDB}}})
if r.Err() != nil {
panic(r.Err())
}
return nil
}
有没有办法强制执行命令。 或者我做错了什么?
解决方案:
r := client.Database(dbName).RunCommand(context.Background(),bson.D{{"createUser", userName},
{"pwd", pass}, {"roles", []bson.M{{"role": roleName,"db":roldeDB}}}})
if r.Err() != nil {
panic(r.Err())
}
godoc 说: runCommand 参数...必须是保序类型,例如bson.D 。 Map bson.M等类型无效。 ...
尝试使用 bson.A(bson 数组)
r := client.Database(repoDB).RunCommand(
context.Background(),
bson.D{{"createUser", "user1"}, {"pwd", "pass"},
{"roles", bson.A{bson.D{{"role", "clusterAdmin"}, {"db", "admin"}}, "readWrite"}}},
)
if r.Err() != nil {
panic(r.Err())
}
检查 MongoDb 文档中的其他选项: https://docs.mongodb.com/manual/reference/command/createUser/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.