我试图通过POST请求将一个对象插入到mongodb中。我发送的对象成功地插入到了数据库中,但是我得到了上面提到的错误。
我为mongo db使用的包:
https://github.com/mongodb/mongo-go-driver
连接字串
用户名://用户名://
我设置数据库连接的方式:
var DbConn *mongo.Client //*sql.DB //*mongo.Client
func SetupDB(conn_str string) {
var err error
DbConn, err = mongo.NewClient(options.Client().ApplyURI(conn_str))
if err != nil {
log.Fatal(err)
}
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
err = DbConn.Connect(ctx)
if err != nil {
log.Fatal(err)
}
}
我的对象:
package book
import "go.mongodb.org/mongo-driver/bson/primitive"
type Book struct {
Id primitive.ObjectID `json:"id,omitempty" bson:"_id,omitempty"`
Title string `json:"title" bson:"title"`
Author string `json:"author" bson:"author"`
Year int `json:"year" bson:"year"`
ShortDesc string `json:"shortDesc" bson:"shortDesc"`
Genre string `json:"genre" bson:"genre"`
}
下面是我在insertBook()中发送请求的方法(其中b的类型为Book):
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
result, err := database.DbConn.Database(dbName).Collection(collectionName).InsertOne(ctx, b)
完整错误文本:
多个写入错误:[{写入错误:[]},{(UnknownReplWriteConcern)在副本集配置中找不到名为“majority”'"的写入问题模式}]
My request in Postman
我不确定我是否遗漏了某个配置设置--我刚开始使用mongoDB,我尝试按照这些教程中的示例设置:3,4,他们似乎没有提到任何关于“写入关注”和“多数”的内容。还尝试查看文档并在谷歌上搜索错误,但没有找到任何有用的信息。
9条答案
按热度按时间5t7ly7z51#
当我试图通过POST请求将一个对象插入到mongodb中时,我得到了同样的错误。我发送的对象成功地插入到了数据库中,但是我得到了错误errmsg:“在副本集配置中找不到名为”majority“的写入关注模式”。
它的简单错误,你需要删除**&w=majority**部分结束,它将得到解决
wnvonmuf2#
问题不在于
&w=majority
。如果你的连接字符串在.env文件中,那么就像下面这样写,不带单引号或双引号,结尾也不带分号。czq61nw13#
我得到了同样的错误,在连接字符串的结尾有一个额外白色。在我的例子中,我删除了空格,一切都很好。
mhd8tkvw4#
请移除URI结尾的这个(`),因为这会造成“* 在复本集组态中找不到名为'majortial'的写入相关模式 *”错误。
lmvvr0a85#
在我的例子中,我删除了URI末尾的/,它工作了。
o7jaxewo6#
在我的例子中,我也遇到过同样的错误。我的解决方案是,当我从last(这一个--〉majority/)中删除正斜杠时,我的问题就解决了。
字符串错误:- mongodb+srv:deepu:IvZ98NCXTOV7ro3M@cluster0.m13scys.mongodb.net/employeeDB?retryWrites=true&w=majority/
解出的字符串:- mongodb+服务器:deepu:IvZ98NCXTOV7ro3M@cluster0.m13scys.mongodb.net/employeeDB?retryWrites=true&w=majority
g9icjywg7#
连接字符串遇到相同的错误---〉
请使用连接字符串-“mongodb+srv://deepu:IvZ98NCXTOV7ro3M@cluster0.m13scys.mongodb.net/(数据库名称)”
删除.net/和数据库名称之间的所有内容。
希望这能解决您的疑问!
ia2d9nvy8#
这可能是因为您在.env文件中定义的url末尾使用了空格或分号。因此,不要使用任何引号、双引号、分号或空格MONGO_URI = mongodb+srv://Hussain_Siddiqui:Hsrusher8$$@chatapp.aw5bzak.mongodb.net/?retryWrites=true&w=majority。仍有该警告,请从url中删除&w=majority
l7mqbcuq9#
尝试删除
mongodb.net/{databaseName}?retryWrites=true&w=majority
之后的所有内容,并使其干净整洁,如下图所示