Maison >développement back-end >Golang >Comment résoudre l'erreur « Aucun mode de problème d'écriture nommé « majorité » trouvé » dans MongoDB ?

Comment résoudre l'erreur « Aucun mode de problème d'écriture nommé « majorité » trouvé » dans MongoDB ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-04 21:55:14600parcourir

How to Resolve

Erreur de problème d'écriture dans MongoDB

Lors de l'insertion de données dans MongoDB en utilisant le problème d'écriture majoritaire, il est possible de rencontrer l'erreur :

No write concern mode named 'majority`' found in replica set configuration

Cette erreur se produit car la configuration du jeu de réplicas n'inclut pas de mode de préoccupation en écriture nommé majorité.

Résolution de l'erreur

Pour résoudre cette erreur, ajoutez le mode de préoccupation d'écriture majoritaire à la configuration du jeu de réplicas. Le problème d'écriture majoritaire garantit que les données sont écrites sur une majorité des membres du jeu de réplicas avant d'accuser réception de l'écriture.

Exemple de chaîne de connexion

La chaîne de connexion suivante inclut la majorité écrire le souci :

mongodb+srv://user:[email protected]/DBname?retryWrites=true&w=majority

Modifier la connexion à la base de données

Mettre à jour la base de données fonction de configuration de connexion pour ajouter le problème d'écriture majoritaire :

import (
    "context"
    "time"
    
    "go.mongodb.org/mongo-driver/mongo"
)

var DbConn *mongo.Client

func SetupDB(conn_str string) {
    var err error
    opts := options.Client().ApplyURI(conn_str).SetWriteConcern(options.Majority())
    DbConn, err = mongo.NewClient(opts)
    if err != nil {
        log.Fatal(err)
    }
    ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
    err = DbConn.Connect(ctx)
    if err != nil {
        log.Fatal(err)
    }
}

Demande de mise à jour

Assurez-vous que la requête InsertOne utilise la connexion à la base de données mise à jour :

ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()

result, err := DbConn.Database(dbName).Collection(collectionName).InsertOne(ctx, b)

Après avoir effectué ces modifications, réexécutez l'application et l'erreur devrait être résolue.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn