mongodb '在副本集配置中找不到名为'majority '写入关注模式'错误

zf9nrax1  于 2022-11-03  发布在  Go
关注(0)|答案(9)|浏览(191)

我试图通过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,我尝试按照这些教程中的示例设置:34,他们似乎没有提到任何关于“写入关注”和“多数”的内容。还尝试查看文档并在谷歌上搜索错误,但没有找到任何有用的信息。

5t7ly7z5

5t7ly7z51#

"mongoURI" : "mongodb+srv://${ db user name }:${ db password }@cluster0.mde0j.mongodb.net/cluster0?retryWrites=true&w=majority "

当我试图通过POST请求将一个对象插入到mongodb中时,我得到了同样的错误。我发送的对象成功地插入到了数据库中,但是我得到了错误errmsg:“在副本集配置中找不到名为”majority“的写入关注模式”。
它的简单错误,你需要删除**&w=majority**部分结束,它将得到解决

wnvonmuf

wnvonmuf2#

问题不在于&w=majority。如果你的连接字符串在.env文件中,那么就像下面这样写,不带单引号或双引号,结尾也不带分号。

URI=mongodb+srv://user:password@bookcluster.pxcqs.mongodb.net/DBname?retryWrites=true&w=majority
czq61nw1

czq61nw13#

我得到了同样的错误,在连接字符串的结尾有一个额外白色。在我的例子中,我删除了空格,一切都很好。

mhd8tkvw

mhd8tkvw4#

mongodb+srv://user:password@bookcluster.pxcqs.mongodb.net/DBname?retryWrites=true&w=majority`

请移除URI结尾的这个(`),因为这会造成“* 在复本集组态中找不到名为'majortial'的写入相关模式 *”错误。

lmvvr0a8

lmvvr0a85#

在我的例子中,我删除了URI末尾的/,它工作了。

o7jaxewo

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

g9icjywg

g9icjywg7#

连接字符串遇到相同的错误---〉

请使用连接字符串-“mongodb+srv://deepu:IvZ98NCXTOV7ro3M@cluster0.m13scys.mongodb.net/(数据库名称)”

删除.net/和数据库名称之间的所有内容。
希望这能解决您的疑问!

ia2d9nvy

ia2d9nvy8#

这可能是因为您在.env文件中定义的url末尾使用了空格或分号。因此,不要使用任何引号、双引号、分号或空格MONGO_URI = mongodb+srv://Hussain_Siddiqui:Hsrusher8$$@chatapp.aw5bzak.mongodb.net/?retryWrites=true&w=majority。仍有该警告,请从url中删除&w=majority

l7mqbcuq

l7mqbcuq9#

尝试删除mongodb.net/{databaseName}?retryWrites=true&w=majority之后的所有内容,并使其干净整洁,如下图所示

mongoose.connect("mongodb+srv://{nameOfAdmin}:{password}@atlascluster.ux104bi.mongodb.net/{databaseName}", {useNewUrlParser: true, useUnifiedTopology: true})

相关问题